X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fc0a76c21f0bceb0314aee5d62f785ea8009495e..5ca17dc381bb7fba4f2689143e2080f7549ee0ab:/teshsuite/smpi/mpich3-test/rma/contention_putget.c diff --git a/teshsuite/smpi/mpich3-test/rma/contention_putget.c b/teshsuite/smpi/mpich3-test/rma/contention_putget.c index 6a539a0e4f..abfdb2bbe5 100644 --- a/teshsuite/smpi/mpich3-test/rma/contention_putget.c +++ b/teshsuite/smpi/mpich3-test/rma/contention_putget.c @@ -18,82 +18,92 @@ #define MAXELEMS 6400 #define COUNT 1000 -static int me, nproc; + static const int verbose = 0; void test_put(void); void test_put(void) { - MPI_Win dst_win; - double *dst_buf; - double src_buf[MAXELEMS]; - int i, j; - - 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 < MAXELEMS; i++) - src_buf[i] = me + 1.0; - - MPI_Win_lock(MPI_LOCK_EXCLUSIVE, me, 0, dst_win); - - for (i = 0; i < nproc*MAXELEMS; i++) - dst_buf[i] = 0.0; - - MPI_Win_unlock(me, dst_win); - - MPI_Barrier(MPI_COMM_WORLD); - - for(i = 0; i < nproc; i++) { - 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); - } - - 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_Get(&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); + int me, nproc; + MPI_Comm_size(MPI_COMM_WORLD, &nproc); + MPI_Comm_rank(MPI_COMM_WORLD, &me); + MPI_Win dst_win; + double *dst_buf; + double src_buf[MAXELEMS]; + int i, j; + + 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 < MAXELEMS; i++) + src_buf[i] = me + 1.0; + + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, me, 0, dst_win); + + for (i = 0; i < nproc * MAXELEMS; i++) + dst_buf[i] = 0.0; + + MPI_Win_unlock(me, dst_win); + + MPI_Barrier(MPI_COMM_WORLD); + + for (i = 0; i < nproc; i++) { + 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); + } + + 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_Get(&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); + MPI_Barrier(MPI_COMM_WORLD); - MPI_Win_free(&dst_win); - MPI_Free_mem(dst_buf); + MPI_Win_free(&dst_win); + MPI_Free_mem(dst_buf); } -int main(int argc, char* argv[]) { - MPI_Init(&argc, &argv); - MPI_Comm_size(MPI_COMM_WORLD, &nproc); - MPI_Comm_rank(MPI_COMM_WORLD, &me); +int main(int argc, char *argv[]) +{ + MPI_Init(&argc, &argv); + int me, nproc; + MPI_Comm_size(MPI_COMM_WORLD, &nproc); + MPI_Comm_rank(MPI_COMM_WORLD, &me); - assert(COUNT <= MAXELEMS); + assert(COUNT <= MAXELEMS); - if (me == 0 && verbose) { - printf("Test starting on %d processes\n", nproc); - fflush(stdout); - } + if (me == 0 && verbose) { + printf("Test starting on %d processes\n", nproc); + fflush(stdout); + } - test_put(); + test_put(); - MPI_Barrier(MPI_COMM_WORLD); + MPI_Barrier(MPI_COMM_WORLD); - MPI_Finalize(); + MPI_Finalize(); - if (me == 0 && verbose) { - printf("Test completed.\n"); - fflush(stdout); - } + if (me == 0 && verbose) { + printf("Test completed.\n"); + fflush(stdout); + } - if (me == 0) - printf(" No Errors\n"); + if (me == 0) + printf(" No Errors\n"); - return 0; + return 0; }