X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fc0a76c21f0bceb0314aee5d62f785ea8009495e..14a764d0473e5137d70be1909b292579acb112ce:/teshsuite/smpi/mpich3-test/rma/get_accumulate.c diff --git a/teshsuite/smpi/mpich3-test/rma/get_accumulate.c b/teshsuite/smpi/mpich3-test/rma/get_accumulate.c index 5a533fe0cc..0ffee69ec1 100644 --- a/teshsuite/smpi/mpich3-test/rma/get_accumulate.c +++ b/teshsuite/smpi/mpich3-test/rma/get_accumulate.c @@ -39,7 +39,9 @@ # define TYPE_MPI TYPE_MPI_BASE #endif -void reset_bufs(TYPE_C *win_ptr, TYPE_C *res_ptr, TYPE_C *val_ptr, TYPE_C value, MPI_Win win) { +static void reset_bufs(TYPE_C * win_ptr, TYPE_C * res_ptr, TYPE_C * val_ptr, TYPE_C value, + MPI_Win win) +{ int rank, nproc, i; MPI_Barrier(MPI_COMM_WORLD); @@ -48,10 +50,10 @@ void reset_bufs(TYPE_C *win_ptr, TYPE_C *res_ptr, TYPE_C *val_ptr, TYPE_C value, MPI_Comm_size(MPI_COMM_WORLD, &nproc); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); - memset(win_ptr, 0, sizeof(TYPE_C)*nproc*COUNT); + memset(win_ptr, 0, sizeof(TYPE_C) * nproc * COUNT); MPI_Win_unlock(rank, win); - memset(res_ptr, -1, sizeof(TYPE_C)*nproc*COUNT); + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); for (i = 0; i < COUNT; i++) val_ptr[i] = value; @@ -59,11 +61,12 @@ void reset_bufs(TYPE_C *win_ptr, TYPE_C *res_ptr, TYPE_C *val_ptr, TYPE_C value, MPI_Barrier(MPI_COMM_WORLD); } -int main(int argc, char **argv) { - int i, rank, nproc; - int errors = 0, all_errors = 0; - TYPE_C *win_ptr, *res_ptr, *val_ptr; - MPI_Win win; +int main(int argc, char **argv) +{ + int i, rank, nproc; + int errors = 0, all_errors = 0; + TYPE_C *win_ptr, *res_ptr, *val_ptr; + MPI_Win win; #if defined (GACC_TYPE_DERIVED) MPI_Datatype derived_type; #endif @@ -73,16 +76,16 @@ int main(int argc, char **argv) { MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nproc); - win_ptr = malloc(sizeof(TYPE_C)*nproc*COUNT); - res_ptr = malloc(sizeof(TYPE_C)*nproc*COUNT); - val_ptr = malloc(sizeof(TYPE_C)*COUNT); + win_ptr = malloc(sizeof(TYPE_C) * nproc * COUNT); + res_ptr = malloc(sizeof(TYPE_C) * nproc * COUNT); + val_ptr = malloc(sizeof(TYPE_C) * COUNT); #if defined (GACC_TYPE_DERIVED) MPI_Type_contiguous(1, TYPE_MPI_BASE, &derived_type); MPI_Type_commit(&derived_type); #endif - MPI_Win_create(win_ptr, sizeof(TYPE_C)*nproc*COUNT, sizeof(TYPE_C), + MPI_Win_create(win_ptr, sizeof(TYPE_C) * nproc * COUNT, sizeof(TYPE_C), MPI_INFO_NULL, MPI_COMM_WORLD, &win); /* Test self communication */ @@ -91,16 +94,16 @@ int main(int argc, char **argv) { for (i = 0; i < ITER; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); - MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - rank, 0, COUNT, TYPE_MPI, MPI_SUM, win); + MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, + rank, 0, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_unlock(rank, win); } MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < COUNT; i++) { if (win_ptr[i] != ITER) { - SQUELCH( printf("%d->%d -- SELF[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - rank, rank, i, (TYPE_C) ITER, win_ptr[i]); ); + SQUELCH(printf("%d->%d -- SELF[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + rank, rank, i, (TYPE_C) ITER, win_ptr[i]);); errors++; } } @@ -111,10 +114,10 @@ int main(int argc, char **argv) { reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); for (i = 0; i < ITER; i++) { - MPI_Win_lock(MPI_LOCK_EXCLUSIVE, (rank+1)%nproc, 0, win); - MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - (rank+1)%nproc, 0, COUNT, TYPE_MPI, MPI_SUM, win); - MPI_Win_unlock((rank+1)%nproc, win); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, (rank + 1) % nproc, 0, win); + MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, + (rank + 1) % nproc, 0, COUNT, TYPE_MPI, MPI_SUM, win); + MPI_Win_unlock((rank + 1) % nproc, win); } MPI_Barrier(MPI_COMM_WORLD); @@ -122,8 +125,8 @@ int main(int argc, char **argv) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); for (i = 0; i < COUNT; i++) { if (win_ptr[i] != ITER) { - SQUELCH( printf("%d->%d -- NEIGHBOR[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - (rank+1)%nproc, rank, i, (TYPE_C) ITER, win_ptr[i]); ); + SQUELCH(printf("%d->%d -- NEIGHBOR[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + (rank + 1) % nproc, rank, i, (TYPE_C) ITER, win_ptr[i]);); errors++; } } @@ -136,8 +139,8 @@ int main(int argc, char **argv) { if (rank != 0) { for (i = 0; i < ITER; i++) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, 0, 0, win); - MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - 0, 0, COUNT, TYPE_MPI, MPI_SUM, win); + MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, + 0, 0, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_unlock(0, win); } } @@ -147,9 +150,9 @@ int main(int argc, char **argv) { MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); if (rank == 0 && nproc > 1) { for (i = 0; i < COUNT; i++) { - if (win_ptr[i] != ITER*(nproc-1)) { - SQUELCH( printf("*->%d - CONTENTION[%d]: expected="TYPE_FMT" val="TYPE_FMT"\n", - rank, i, (TYPE_C) ITER*(nproc-1), win_ptr[i]); ); + if (win_ptr[i] != ITER * (nproc - 1)) { + SQUELCH(printf("*->%d - CONTENTION[%d]: expected=" TYPE_FMT " val=" TYPE_FMT "\n", + rank, i, (TYPE_C) ITER * (nproc - 1), win_ptr[i]);); errors++; } } @@ -165,8 +168,8 @@ int main(int argc, char **argv) { MPI_Win_fence(MPI_MODE_NOPRECEDE, win); for (j = 0; j < nproc; j++) { - MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j*COUNT], COUNT, TYPE_MPI, - j, rank*COUNT, COUNT, TYPE_MPI, MPI_SUM, win); + MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j * COUNT], COUNT, TYPE_MPI, + j, rank * COUNT, COUNT, TYPE_MPI, MPI_SUM, win); } MPI_Win_fence(MPI_MODE_NOSUCCEED, win); MPI_Barrier(MPI_COMM_WORLD); @@ -174,9 +177,11 @@ int main(int argc, char **argv) { for (j = 0; j < nproc; j++) { int c; for (c = 0; c < COUNT; c++) { - if (res_ptr[j*COUNT+c] != i*rank) { - SQUELCH( printf("%d->%d -- ALL-TO-ALL (FENCE) [%d]: iter %d, expected result "TYPE_FMT", got "TYPE_FMT"\n", - rank, j, c, i, (TYPE_C) i*rank, res_ptr[j*COUNT+c]); ); + if (res_ptr[j * COUNT + c] != i * rank) { + SQUELCH(printf + ("%d->%d -- ALL-TO-ALL (FENCE) [%d]: iter %d, expected result " TYPE_FMT + ", got " TYPE_FMT "\n", rank, j, c, i, (TYPE_C) i * rank, + res_ptr[j * COUNT + c]);); errors++; } } @@ -188,9 +193,10 @@ int main(int argc, char **argv) { for (i = 0; i < nproc; i++) { int c; for (c = 0; c < COUNT; c++) { - if (win_ptr[i*COUNT+c] != ITER*i) { - SQUELCH( printf("%d->%d -- ALL-TO-ALL (FENCE): expected "TYPE_FMT", got "TYPE_FMT"\n", - i, rank, (TYPE_C) ITER*i, win_ptr[i*COUNT+c]); ); + if (win_ptr[i * COUNT + c] != ITER * i) { + SQUELCH(printf + ("%d->%d -- ALL-TO-ALL (FENCE): expected " TYPE_FMT ", got " TYPE_FMT "\n", + i, rank, (TYPE_C) ITER * i, win_ptr[i * COUNT + c]);); errors++; } } @@ -206,8 +212,8 @@ int main(int argc, char **argv) { MPI_Win_lock_all(0, win); for (j = 0; j < nproc; j++) { - MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j*COUNT], COUNT, TYPE_MPI, - j, rank*COUNT, COUNT, TYPE_MPI, MPI_SUM, win); + MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j * COUNT], COUNT, TYPE_MPI, + j, rank * COUNT, COUNT, TYPE_MPI, MPI_SUM, win); } MPI_Win_unlock_all(win); MPI_Barrier(MPI_COMM_WORLD); @@ -215,9 +221,11 @@ int main(int argc, char **argv) { for (j = 0; j < nproc; j++) { int c; for (c = 0; c < COUNT; c++) { - if (res_ptr[j*COUNT+c] != i*rank) { - SQUELCH( printf("%d->%d -- ALL-TO-ALL (LOCK-ALL) [%d]: iter %d, expected result "TYPE_FMT", got "TYPE_FMT"\n", - rank, j, c, i, (TYPE_C) i*rank, res_ptr[j*COUNT+c]); ); + if (res_ptr[j * COUNT + c] != i * rank) { + SQUELCH(printf + ("%d->%d -- ALL-TO-ALL (LOCK-ALL) [%d]: iter %d, expected result " + TYPE_FMT ", got " TYPE_FMT "\n", rank, j, c, i, (TYPE_C) i * rank, + res_ptr[j * COUNT + c]);); errors++; } } @@ -229,9 +237,10 @@ int main(int argc, char **argv) { for (i = 0; i < nproc; i++) { int c; for (c = 0; c < COUNT; c++) { - if (win_ptr[i*COUNT+c] != ITER*i) { - SQUELCH( printf("%d->%d -- ALL-TO-ALL (LOCK-ALL): expected "TYPE_FMT", got "TYPE_FMT"\n", - i, rank, (TYPE_C) ITER*i, win_ptr[i*COUNT+c]); ); + if (win_ptr[i * COUNT + c] != ITER * i) { + SQUELCH(printf + ("%d->%d -- ALL-TO-ALL (LOCK-ALL): expected " TYPE_FMT ", got " TYPE_FMT + "\n", i, rank, (TYPE_C) ITER * i, win_ptr[i * COUNT + c]);); errors++; } } @@ -247,8 +256,8 @@ int main(int argc, char **argv) { MPI_Win_lock_all(0, win); for (j = 0; j < nproc; j++) { - MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j*COUNT], COUNT, TYPE_MPI, - j, rank*COUNT, COUNT, TYPE_MPI, MPI_SUM, win); + MPI_Get_accumulate(val_ptr, COUNT, TYPE_MPI, &res_ptr[j * COUNT], COUNT, TYPE_MPI, + j, rank * COUNT, COUNT, TYPE_MPI, MPI_SUM, win); MPI_Win_flush(j, win); } MPI_Win_unlock_all(win); @@ -257,9 +266,11 @@ int main(int argc, char **argv) { for (j = 0; j < nproc; j++) { int c; for (c = 0; c < COUNT; c++) { - if (res_ptr[j*COUNT+c] != i*rank) { - SQUELCH( printf("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH) [%d]: iter %d, expected result "TYPE_FMT", got "TYPE_FMT"\n", - rank, j, c, i, (TYPE_C) i*rank, res_ptr[j*COUNT+c]); ); + if (res_ptr[j * COUNT + c] != i * rank) { + SQUELCH(printf + ("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH) [%d]: iter %d, expected result " + TYPE_FMT ", got " TYPE_FMT "\n", rank, j, c, i, (TYPE_C) i * rank, + res_ptr[j * COUNT + c]);); errors++; } } @@ -271,9 +282,10 @@ int main(int argc, char **argv) { for (i = 0; i < nproc; i++) { int c; for (c = 0; c < COUNT; c++) { - if (win_ptr[i*COUNT+c] != ITER*i) { - SQUELCH( printf("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH): expected "TYPE_FMT", got "TYPE_FMT"\n", - i, rank, (TYPE_C) ITER*i, win_ptr[i*COUNT+c]); ); + if (win_ptr[i * COUNT + c] != ITER * i) { + SQUELCH(printf + ("%d->%d -- ALL-TO-ALL (LOCK-ALL+FLUSH): expected " TYPE_FMT ", got " + TYPE_FMT "\n", i, rank, (TYPE_C) ITER * i, win_ptr[i * COUNT + c]);); errors++; } } @@ -285,52 +297,58 @@ int main(int argc, char **argv) { reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); - for (i = 0; i < COUNT*nproc; i++) + for (i = 0; i < COUNT * nproc; i++) win_ptr[i] = (TYPE_C) rank; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); for (i = 0; i < ITER; i++) { - int j, target = (rank+1) % nproc; + int j, target = (rank + 1) % nproc; /* Test: origin_buf = NULL */ + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); /* reset result buffer. */ + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); + target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { - SQUELCH( printf("%d->%d -- NOP(1)[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - target, rank, i, (TYPE_C) target, res_ptr[i]); ); + SQUELCH(printf("%d->%d -- NOP(1)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0 */ + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); + target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { - SQUELCH( printf("%d->%d -- NOP(2)[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - target, rank, i, (TYPE_C) target, res_ptr[i]); ); + SQUELCH(printf("%d->%d -- NOP(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0, origin_dtype = NULL */ + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, res_ptr, COUNT, TYPE_MPI, - target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); + target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { - SQUELCH( printf("%d->%d -- NOP(2)[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - target, rank, i, (TYPE_C) target, res_ptr[i]); ); + SQUELCH(printf("%d->%d -- NOP(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } @@ -341,7 +359,7 @@ int main(int argc, char **argv) { reset_bufs(win_ptr, res_ptr, val_ptr, 1, win); MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, win); - for (i = 0; i < COUNT*nproc; i++) + for (i = 0; i < COUNT * nproc; i++) win_ptr[i] = (TYPE_C) rank; MPI_Win_unlock(rank, win); MPI_Barrier(MPI_COMM_WORLD); @@ -350,43 +368,52 @@ int main(int argc, char **argv) { int j, target = rank; /* Test: origin_buf = NULL */ + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, COUNT, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); + target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { - SQUELCH( printf("%d->%d -- NOP_SELF(1)[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - target, rank, i, (TYPE_C) target, res_ptr[i]); ); + SQUELCH(printf + ("%d->%d -- NOP_SELF(1)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0 */ + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, TYPE_MPI, res_ptr, COUNT, TYPE_MPI, - target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); + target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { - SQUELCH( printf("%d->%d -- NOP_SELF(2)[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - target, rank, i, (TYPE_C) target, res_ptr[i]); ); + SQUELCH(printf + ("%d->%d -- NOP_SELF(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } } /* Test: origin_buf = NULL, origin_count = 0, origin_dtype = NULL */ + memset(res_ptr, -1, sizeof(TYPE_C) * nproc * COUNT); + MPI_Win_lock(MPI_LOCK_EXCLUSIVE, target, 0, win); MPI_Get_accumulate(NULL, 0, MPI_DATATYPE_NULL, res_ptr, COUNT, TYPE_MPI, - target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); + target, 0, COUNT, TYPE_MPI, MPI_NO_OP, win); MPI_Win_unlock(target, win); for (j = 0; j < COUNT; j++) { if (res_ptr[j] != (TYPE_C) target) { - SQUELCH( printf("%d->%d -- NOP_SELF(2)[%d]: expected "TYPE_FMT", got "TYPE_FMT"\n", - target, rank, i, (TYPE_C) target, res_ptr[i]); ); + SQUELCH(printf + ("%d->%d -- NOP_SELF(2)[%d]: expected " TYPE_FMT ", got " TYPE_FMT "\n", + target, rank, i, (TYPE_C) target, res_ptr[i]);); errors++; } }