Orion and Lev,

here is the minimal patch that makes mpi4py tests happy again

there might not be a v1.10.2, so you might have to manually apply that patch until v2.0.0

Cheers,

Gilles

On 11/10/2015 8:45 AM, Gilles Gouaillardet wrote:
Orion and Lev,

i will have a look at this.

it seems we backported half of some changes and zero size messages are no more handled correctly.

Cheers,

Gilles

On 11/10/2015 8:43 AM, Lev Givon wrote:
Received from Orion Poplawski on Mon, Nov 09, 2015 at 06:36:05PM EST:
We're seeing test failures after bumping to 1.10.1 in Fedora (see below). Is
anyone else seeing this?  Any suggestions for debugging?
I see similar errors - you might want to mention it on the
mpi...@googlegroups.com mailing list.

_______________________________________________
users mailing list
us...@open-mpi.org
Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
Link to this post: http://www.open-mpi.org/community/lists/users/2015/11/28029.php


commit 4ee20ba31dd64b8f899447cdad78ec2379acfce7
Author: Gilles Gouaillardet <gil...@rist.or.jp>
List-Post: users@lists.open-mpi.org
Date:   Tue Nov 10 08:59:03 2015 +0900

    fix NBC_Copy for legitimate zero size messages

    (back ported from commit 
open-mpi/ompi@0bd765eddd33e3d4ac18ec644c60a5c160cb48dc)
    (back ported from commit 
open-mpi/ompi@9a70765f27fdf17e70e1a115754fef7e5f16132a)

diff --git a/ompi/mca/coll/libnbc/nbc_internal.h 
b/ompi/mca/coll/libnbc/nbc_internal.h
index bf2f1cb..81be8cc 100644
--- a/ompi/mca/coll/libnbc/nbc_internal.h
+++ b/ompi/mca/coll/libnbc/nbc_internal.h
@@ -501,7 +501,14 @@ static inline int NBC_Copy(void *src, int srccount, 
MPI_Datatype srctype, void *
   } else {
     /* we have to pack and unpack */
     res = MPI_Pack_size(srccount, srctype, comm, &size);
-    if (MPI_SUCCESS != res || 0 == size) { printf("MPI Error in 
MPI_Pack_size() (%i:%i)\n", res, size); return (MPI_SUCCESS == res) ? 
MPI_ERR_SIZE : res;}
+    if (MPI_SUCCESS != res) {
+      printf ("MPI Error in MPI_Pack_size() (%i:%i)", res, size);
+      return res;
+    }
+
+    if (0 == size) {
+        return OMPI_SUCCESS;
+    }
     packbuf = malloc(size);
     if (NULL == packbuf) { printf("Error in malloc()\n"); return res; }
     pos=0;

Reply via email to