[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1.2-61-g122dbd9

Service Account noreply at mpich.org
Fri Aug 1 08:42:57 CDT 2014


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  122dbd96b2df6e517fe1589fac0133d1bc381db6 (commit)
      from  1d8ab1069329201acbcf532f78e46319b27119fe (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/122dbd96b2df6e517fe1589fac0133d1bc381db6

commit 122dbd96b2df6e517fe1589fac0133d1bc381db6
Author: Sangmin Seo <sseo at anl.gov>
Date:   Thu Jul 31 13:34:12 2014 -0500

    Add a multi-threaded MPI_Get test.
    
    Multiple threads with multiple processes do MPI_Get on the same
    target and do MPI_Win_flush_all. The original code for this test
    was reported in ticket #2143.
    
    Signed-off-by: Xin Zhao <xinzhao3 at illinois.edu>

diff --git a/test/mpi/threads/rma/Makefile.am b/test/mpi/threads/rma/Makefile.am
index b34cbcc..2a40e00 100644
--- a/test/mpi/threads/rma/Makefile.am
+++ b/test/mpi/threads/rma/Makefile.am
@@ -9,4 +9,4 @@ include $(top_srcdir)/threads/Makefile_threads.mtest
 
 EXTRA_DIST = testlist
 
-noinst_PROGRAMS = multirma
+noinst_PROGRAMS = multirma multiget
diff --git a/test/mpi/threads/rma/multiget.c b/test/mpi/threads/rma/multiget.c
new file mode 100644
index 0000000..fd5e763
--- /dev/null
+++ b/test/mpi/threads/rma/multiget.c
@@ -0,0 +1,78 @@
+/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
+/*
+ *  (C) 2014 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "mpi.h"
+#include "stdio.h"
+#include "stdlib.h"
+#include "mpitest.h"
+#include "mpithreadtest.h"
+
+#define NUM_THREADS 4
+#define COUNT       16
+#define LOOPS       10000
+
+MPI_Win win;
+
+MTEST_THREAD_RETURN_TYPE run_test(void *arg)
+{
+    int i;
+    double *local_b;
+
+    MPI_Alloc_mem(COUNT * sizeof(double), MPI_INFO_NULL, &local_b);
+
+    for (i = 0; i < LOOPS; i++) {
+        MPI_Get(local_b, COUNT, MPI_DOUBLE, 0, 0, COUNT, MPI_DOUBLE, win);
+        MPI_Win_flush_all(win);
+    }
+
+    MPI_Free_mem(local_b);
+
+    return (MTEST_THREAD_RETURN_TYPE) NULL;
+}
+
+int main(int argc, char *argv[])
+{
+    int errs = 0;
+    int rank, nprocs, i, pmode;
+    double *win_mem;
+
+    MTest_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &pmode);
+    if (pmode != MPI_THREAD_MULTIPLE) {
+        fprintf(stderr, "MPI_THREAD_MULTIPLE is not supported\n");
+        MPI_Abort(MPI_COMM_WORLD, -1);
+    }
+
+    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
+    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
+
+    if (nprocs < 2) {
+        printf("Run this program with 2 or more processes\n");
+        MPI_Abort(MPI_COMM_WORLD, 1);
+    }
+
+    if (rank == 0) {
+        errs += MPI_Win_allocate(COUNT * sizeof(double), sizeof(double),
+                MPI_INFO_NULL, MPI_COMM_WORLD, &win_mem, &win);
+    } else {
+        errs += MPI_Win_allocate(0, sizeof(double), MPI_INFO_NULL,
+                MPI_COMM_WORLD, &win_mem, &win);
+    }
+
+    errs += MPI_Win_lock_all(0, win);
+
+    for (i = 0; i < NUM_THREADS; i++)
+        errs += MTest_Start_thread(run_test, NULL);
+    errs += MTest_Join_threads();
+
+    errs += MPI_Win_unlock_all(win);
+
+    errs += MPI_Win_free(&win);
+
+    MTest_Finalize(errs);
+    MPI_Finalize();
+
+    return 0;
+}
diff --git a/test/mpi/threads/rma/testlist b/test/mpi/threads/rma/testlist
index d476236..b9f0a46 100644
--- a/test/mpi/threads/rma/testlist
+++ b/test/mpi/threads/rma/testlist
@@ -1 +1,2 @@
-multirma 2 mpiversion=3.0
\ No newline at end of file
+multirma 2 mpiversion=3.0
+multiget 2 mpiversion=3.0 xfail=ticket2143

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

Summary of changes:
 test/mpi/threads/rma/Makefile.am                |    2 +-
 test/mpi/threads/rma/{multirma.c => multiget.c} |   35 +++++++++++++++--------
 test/mpi/threads/rma/testlist                   |    3 +-
 3 files changed, 26 insertions(+), 14 deletions(-)
 copy test/mpi/threads/rma/{multirma.c => multiget.c} (57%)


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list