[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