X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/826897d361add5db3272a9810e70371a40ba1660..0048f1772bbbe60af448267264b81aa88fb675c2:/teshsuite/smpi/mpich3-test/rma/win_dynamic_acc.c diff --git a/teshsuite/smpi/mpich3-test/rma/win_dynamic_acc.c b/teshsuite/smpi/mpich3-test/rma/win_dynamic_acc.c index ebb0a35fc1..d68f467ebb 100644 --- a/teshsuite/smpi/mpich3-test/rma/win_dynamic_acc.c +++ b/teshsuite/smpi/mpich3-test/rma/win_dynamic_acc.c @@ -11,46 +11,50 @@ #include #include "mpitest.h" -#define ITER 100 +#define ITER_PER_RANK 25 const int verbose = 0; -int main(int argc, char **argv) { - int i, j, rank, nproc; - int errors = 0, all_errors = 0; - int val = 0, one = 1; +int main(int argc, char **argv) +{ + int i, rank, nproc; + int errors = 0, all_errors = 0; + int val = 0, one = 1; + int iter; MPI_Aint *val_ptrs; - MPI_Win dyn_win; + MPI_Win dyn_win; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); + iter = ITER_PER_RANK * nproc; + val_ptrs = malloc(nproc * sizeof(MPI_Aint)); MPI_Get_address(&val, &val_ptrs[rank]); - MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, val_ptrs, 1, MPI_AINT, - MPI_COMM_WORLD); + MPI_Allgather(MPI_IN_PLACE, 0, MPI_DATATYPE_NULL, val_ptrs, 1, MPI_AINT, MPI_COMM_WORLD); MPI_Win_create_dynamic(MPI_INFO_NULL, MPI_COMM_WORLD, &dyn_win); - MPI_Win_attach(dyn_win, &one, sizeof(int)); + MPI_Win_attach(dyn_win, &val, sizeof(int)); - for (i = 0; i < ITER; i++) { - MPI_Win_fence(MPI_MODE_NOPRECEDE, dyn_win); - MPI_Accumulate(&one, 1, MPI_INT, i%nproc, val_ptrs[i%nproc], 1, MPI_INT, MPI_SUM, dyn_win); - MPI_Win_fence(MPI_MODE_NOSUCCEED, dyn_win); + for (i = 0; i < iter; i++) { + MPI_Win_fence(MPI_MODE_NOPRECEDE, dyn_win); + MPI_Accumulate(&one, 1, MPI_INT, i % nproc, val_ptrs[i % nproc], 1, MPI_INT, MPI_SUM, + dyn_win); + MPI_Win_fence(MPI_MODE_NOSUCCEED, dyn_win); } MPI_Barrier(MPI_COMM_WORLD); /* Read and verify my data */ - if ( val != ITER ) { + if (val != iter) { errors++; - printf("%d -- Got %d, expected %d\n", rank, val, ITER); + printf("%d -- Got %d, expected %d\n", rank, val, iter); } - MPI_Win_detach(dyn_win, &one); + MPI_Win_detach(dyn_win, &val); MPI_Win_free(&dyn_win); MPI_Reduce(&errors, &all_errors, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);