[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2b3-204-gcc6f9b7

Service Account noreply at mpich.org
Fri Jul 10 16:36:22 CDT 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  cc6f9b7d56e6d94605651dfc9e51736374991b59 (commit)
      from  c32221f8677d7772f06d2334e335fe2c6e50455a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/cc6f9b7d56e6d94605651dfc9e51736374991b59

commit cc6f9b7d56e6d94605651dfc9e51736374991b59
Author: Lena Oden <loden at anl.gov>
Date:   Fri Jul 10 00:22:37 2015 -0500

    New comm_idup test, overlap with isend/irecv

diff --git a/test/mpi/comm/Makefile.am b/test/mpi/comm/Makefile.am
index 2739a40..9617dee 100644
--- a/test/mpi/comm/Makefile.am
+++ b/test/mpi/comm/Makefile.am
@@ -37,6 +37,7 @@ noinst_PROGRAMS =     \
     comm_idup         \
     comm_idup_mul     \
     comm_idup_overlap \
+    comm_idup_isend   \
     comm_idup_nb      \
     comm_idup_iallreduce \
     comm_info
diff --git a/test/mpi/comm/comm_idup_isend.c b/test/mpi/comm/comm_idup_isend.c
new file mode 100644
index 0000000..43afd81
--- /dev/null
+++ b/test/mpi/comm/comm_idup_isend.c
@@ -0,0 +1,100 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "mpi.h"
+#include "mpitest.h"
+
+
+#define ITERS 4
+
+int main(int argc, char **argv)
+{
+    int errs = 0;
+    int i,j;
+    int rank, size,  rsize;
+    int in[ITERS], out[ITERS], sol[ITERS], cnt;
+    int isLeft;
+    MPI_Comm newcomm[ITERS], testcomm;
+    MPI_Request *sreq;
+
+    MTest_Init( &argc, &argv );
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    MPI_Comm_size(MPI_COMM_WORLD, &size);
+    if (size < 2) {
+        printf("this test requires at least 2 processes\n");
+        MPI_Abort(MPI_COMM_WORLD, 1);
+    }
+
+
+    sreq = (MPI_Request*)malloc(sizeof(MPI_Request)*(size+1)*ITERS);
+
+    while (MTestGetIntracommGeneral(&testcomm, 1, 1)) {
+        if (testcomm == MPI_COMM_NULL) continue;
+
+        MPI_Comm_rank(testcomm, &rank);
+        MPI_Comm_size(testcomm, &size);
+        cnt = 0;
+        for(j = 0; j < ITERS; j++) {
+            if(rank == 0) {
+                out[j] = 815;
+                in[j] = 815;
+                sol[j] = 815;
+                for(i = 1; i<size; i++)
+                    MPI_Isend(&out[j], 1, MPI_INT, i, 0, testcomm,  &sreq[cnt++]);
+                MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]);
+            } else {
+                out[j] = 0;
+                in[j] = 0;
+                sol[j] = 815;
+                MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]);
+                MPI_Irecv(&in[j], 1, MPI_INT, 0, 0, testcomm, &sreq[cnt++]);
+             }
+
+         }
+        MPI_Waitall(cnt, sreq, MPI_STATUS_IGNORE);
+
+        for(j = 0; j < ITERS; j++) {
+             if(sol[j] != in[j]) errs++;
+             errs+=MTestTestComm(newcomm[j]);
+             MPI_Comm_free(&newcomm[j]);
+       }
+       MTestFreeComm(&testcomm);
+    }
+   while (MTestGetIntercomm(&testcomm, &isLeft, 1)) {
+        if (testcomm == MPI_COMM_NULL) continue;
+
+        MPI_Comm_rank(testcomm, &rank);
+        MPI_Comm_size(testcomm, &size);
+        MPI_Comm_remote_size(testcomm, &rsize);
+        cnt = 0;
+        for(j = 0; j < ITERS; j++) {
+            if(rank == 0) {
+                out[j] = 815;
+                in[j] = 815;
+                sol[j] = 815;
+                for(i = 1; i<rsize; i++)
+                    MPI_Isend(&out[j], 1, MPI_INT, i, 0, testcomm,  &sreq[cnt++]);
+                MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]);
+            } else {
+                out[j] = 0;
+                in[j] = 0;
+                sol[j] = 815;
+                MPI_Comm_idup(testcomm, &newcomm[j], &sreq[cnt++]);
+                MPI_Irecv(&in[j], 1, MPI_INT, 0, 0, testcomm, &sreq[cnt++]);
+             }
+
+         }
+        MPI_Waitall(cnt, sreq, MPI_STATUS_IGNORE);
+
+        for(j = 0; j < ITERS; j++) {
+             if(sol[j] != in[j]) errs++;
+             errs+=MTestTestComm(newcomm[j]);
+             MPI_Comm_free(&newcomm[j]);
+       }
+       MTestFreeComm(&testcomm);
+    }
+
+     MTest_Finalize(errs);
+     MPI_Finalize();
+
+}
diff --git a/test/mpi/comm/testlist b/test/mpi/comm/testlist
index 5132e5b..b75d295 100644
--- a/test/mpi/comm/testlist
+++ b/test/mpi/comm/testlist
@@ -31,6 +31,7 @@ comm_idup_mul 2 mpiversion=3.0
 comm_idup_overlap 2 mpiversion=3.0
 comm_idup_iallreduce 6 mpiversion=3.0 xfail=ticket2269
 comm_idup_nb 6 mpiversion=3.0 xfail=ticket2283
+comm_idup_isend 6 mpiversion=3.0 xfail=ticket2269
 dup_with_info 2 mpiversion=3.0
 dup_with_info 4 mpiversion=3.0
 dup_with_info 9 mpiversion=3.0

-----------------------------------------------------------------------

Summary of changes:
 test/mpi/comm/Makefile.am       |    1 +
 test/mpi/comm/comm_idup_isend.c |  100 +++++++++++++++++++++++++++++++++++++++
 test/mpi/comm/testlist          |    1 +
 3 files changed, 102 insertions(+), 0 deletions(-)
 create mode 100644 test/mpi/comm/comm_idup_isend.c


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list