Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
changed match_recv and match_send...They were requiring matching communicators,
authorMark Stillwell <mark.stillwell@ens-lyon.fr>
Thu, 26 May 2011 08:39:56 +0000 (10:39 +0200)
committerMark Stillwell <mark.stillwell@ens-lyon.fr>
Thu, 26 May 2011 08:39:56 +0000 (10:39 +0200)
which was causing communication to fail after MPI_comm_dup. Real mpi only tests for
matching size, src, tag.

src/smpi/smpi_base.c

index 3d6b456..0d5cdd2 100644 (file)
@@ -26,7 +26,7 @@ static int match_recv(void* a, void* b) {
 
    xbt_assert(ref, "Cannot match recv against null reference");
    xbt_assert(req, "Cannot match recv against null request");
 
    xbt_assert(ref, "Cannot match recv against null reference");
    xbt_assert(req, "Cannot match recv against null request");
-   return req->comm == ref->comm
+   return req->size == ref->size
           && (ref->src == MPI_ANY_SOURCE || req->src == ref->src)
           && (ref->tag == MPI_ANY_TAG || req->tag == ref->tag);
 }
           && (ref->src == MPI_ANY_SOURCE || req->src == ref->src)
           && (ref->tag == MPI_ANY_TAG || req->tag == ref->tag);
 }
@@ -37,7 +37,7 @@ static int match_send(void* a, void* b) {
 
    xbt_assert(ref, "Cannot match send against null reference");
    xbt_assert(req, "Cannot match send against null request");
 
    xbt_assert(ref, "Cannot match send against null reference");
    xbt_assert(req, "Cannot match send against null request");
-   return req->comm == ref->comm
+   return req->size == ref->size
           && (req->src == MPI_ANY_SOURCE || req->src == ref->src)
           && (req->tag == MPI_ANY_TAG || req->tag == ref->tag);
 }
           && (req->src == MPI_ANY_SOURCE || req->src == ref->src)
           && (req->tag == MPI_ANY_TAG || req->tag == ref->tag);
 }