X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d0ffc37686edcc803601f76ab51fdfed5fc2f241..98236eba13100727f2421d07b097cf84416ef74e:/teshsuite/smpi/mpich3-test/comm/ctxsplit.c diff --git a/teshsuite/smpi/mpich3-test/comm/ctxsplit.c b/teshsuite/smpi/mpich3-test/comm/ctxsplit.c index 4e73dc5ca1..fe46d375ea 100644 --- a/teshsuite/smpi/mpich3-test/comm/ctxsplit.c +++ b/teshsuite/smpi/mpich3-test/comm/ctxsplit.c @@ -11,70 +11,71 @@ #include "mpitest.h" /* - * This check is intended to fail if there is a leak of context ids. + * This check is intended to fail if there is a leak of context ids. * Because this is trying to exhaust the number of context ids, it needs - * to run for a longer time than many tests. The for loop uses 100,000 + * to run for a longer time than many tests. The for loop uses 100,000 * iterations, which is adequate for MPICH (with only about 1k context ids * available). */ -int main(int argc, char** argv) { +int main(int argc, char **argv) +{ - int i=0; - int randval; - int rank; - int errs = 0; - MPI_Comm newcomm; - double startTime; - int nLoop = 100000; - - MTest_Init(&argc,&argv); + int i = 0; + int randval; + int rank; + int errs = 0; + MPI_Comm newcomm; + double startTime; + int nLoop = 1000; - for (i=1; i 0) { - rate = i / rate; - MTestPrintfMsg( 10, "After %d (%f)\n", i, rate ); - } - else { - MTestPrintfMsg( 10, "After %d\n", i ); - } - } - - /* FIXME: Explain the rationale behind rand in this test */ - randval=rand(); - - if (randval%(rank+2) == 0) { - MPI_Comm_split(MPI_COMM_WORLD,1,rank,&newcomm); - MPI_Comm_free( &newcomm ); - } - else { - MPI_Comm_split(MPI_COMM_WORLD,MPI_UNDEFINED,rank,&newcomm); - if (newcomm != MPI_COMM_NULL) { - errs++; - printf( "Created a non-null communicator with MPI_UNDEFINED\n" ); - } - } - - } - - MTest_Finalize( errs ); - MPI_Finalize(); - - return 0; + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + + startTime = MPI_Wtime(); + for (i = 0; i < nLoop; i++) { + + if (rank == 0 && (i % 100 == 0)) { + double rate = MPI_Wtime() - startTime; + if (rate > 0) { + rate = i / rate; + MTestPrintfMsg(10, "After %d (%f)\n", i, rate); + } + else { + MTestPrintfMsg(10, "After %d\n", i); + } + } + + /* FIXME: Explain the rationale behind rand in this test */ + randval = rand(); + + if (randval % (rank + 2) == 0) { + MPI_Comm_split(MPI_COMM_WORLD, 1, rank, &newcomm); + MPI_Comm_free(&newcomm); + } + else { + MPI_Comm_split(MPI_COMM_WORLD, MPI_UNDEFINED, rank, &newcomm); + if (newcomm != MPI_COMM_NULL) { + errs++; + printf("Created a non-null communicator with MPI_UNDEFINED\n"); + } + } + + } + + MTest_Finalize(errs); + MPI_Finalize(); + + return 0; }