X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3080c6b0d097d6b3b7d5b3dda0592154ce438f64..b382315f0693083344eb9a25a8fc37b7091bddc7:/teshsuite/smpi/mpich3-test/rma/contention_put.c diff --git a/teshsuite/smpi/mpich3-test/rma/contention_put.c b/teshsuite/smpi/mpich3-test/rma/contention_put.c index 2b2be301ca..28b99524a7 100644 --- a/teshsuite/smpi/mpich3-test/rma/contention_put.c +++ b/teshsuite/smpi/mpich3-test/rma/contention_put.c @@ -19,87 +19,90 @@ #define MAXELEMS 6400 #define COUNT 1000 -static int me, nproc; static const int verbose = 0; int test_put(void); int test_put(void) { - MPI_Win dst_win; - double *dst_buf; - double src_buf[MAXELEMS]; - int i, j; - int errs = 0; + int me, nproc; + MPI_Comm_size(MPI_COMM_WORLD, &nproc); + MPI_Comm_rank(MPI_COMM_WORLD, &me); - MPI_Alloc_mem(sizeof(double)*nproc*MAXELEMS, MPI_INFO_NULL, &dst_buf); - MPI_Win_create(dst_buf, sizeof(double)*nproc*MAXELEMS, 1, MPI_INFO_NULL, - MPI_COMM_WORLD, &dst_win); + assert(COUNT <= MAXELEMS); - for (i = 0; i < MAXELEMS; i++) - src_buf[i] = me + 1.0; + if (me == 0 && verbose) { + printf("Test starting on %d processes\n", nproc); + fflush(stdout); + } + + MPI_Win dst_win; + double *dst_buf; + double src_buf[MAXELEMS]; + int i, j; + int errs = 0; - MPI_Win_lock(MPI_LOCK_EXCLUSIVE, me, 0, dst_win); + MPI_Alloc_mem(sizeof(double) * nproc * MAXELEMS, MPI_INFO_NULL, &dst_buf); + MPI_Win_create(dst_buf, sizeof(double) * nproc * MAXELEMS, 1, MPI_INFO_NULL, + MPI_COMM_WORLD, &dst_win); - for (i = 0; i < nproc*MAXELEMS; i++) - dst_buf[i] = 0.0; + for (i = 0; i < MAXELEMS; i++) + src_buf[i] = me + 1.0; - MPI_Win_unlock(me, dst_win); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, me, 0, dst_win); - MPI_Barrier(MPI_COMM_WORLD); + for (i = 0; i < nproc * MAXELEMS; i++) + dst_buf[i] = 0.0; - for(i = 0; i < nproc; i++) { - /* int target = (me + i) % nproc; */ - int target = i; - for(j = 0; j < COUNT; j++) { - if (verbose) printf("%2d -> %2d [%2d]\n", me, target, j); - MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, dst_win); - MPI_Put(&src_buf[j], sizeof(double), MPI_BYTE, target, - (me*MAXELEMS+j)*sizeof(double), sizeof(double), MPI_BYTE, dst_win); - MPI_Win_unlock(target, dst_win); + MPI_Win_unlock(me, dst_win); + + MPI_Barrier(MPI_COMM_WORLD); + + for (i = 0; i < nproc; i++) { + /* int target = (me + i) % nproc; */ + int target = i; + for (j = 0; j < COUNT; j++) { + if (verbose) + printf("%2d -> %2d [%2d]\n", me, target, j); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, dst_win); + MPI_Put(&src_buf[j], sizeof(double), MPI_BYTE, target, + (me * MAXELEMS + j) * sizeof(double), sizeof(double), MPI_BYTE, dst_win); + MPI_Win_unlock(target, dst_win); + } } - } - - MPI_Barrier(MPI_COMM_WORLD); - - /* Check that the correct data was returned. This assumes that the - systems have the same data representations */ - for (i=0; i