[mpich] MPICH primary repository branch, master, updated. v3.1.2-61-g122dbd9
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/122dbd96b2df6e517fe1589fac0133d1bc... commit 122dbd96b2df6e517fe1589fac0133d1bc381db6 Author: Sangmin Seo <[email protected]> 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 <[email protected]> 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
participants (1)
-
noreply@mpich.org