X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d0ffc37686edcc803601f76ab51fdfed5fc2f241..239db2df2d2884b52782ad2c7cf141179bf9c352:/teshsuite/smpi/mpich3-test/pt2pt/cancelrecv.c diff --git a/teshsuite/smpi/mpich3-test/pt2pt/cancelrecv.c b/teshsuite/smpi/mpich3-test/pt2pt/cancelrecv.c index 274474858a..1770167613 100644 --- a/teshsuite/smpi/mpich3-test/pt2pt/cancelrecv.c +++ b/teshsuite/smpi/mpich3-test/pt2pt/cancelrecv.c @@ -7,131 +7,128 @@ #include #include #include "mpitest.h" -#include /* For memset */ +#include /* For memset */ -int main( int argc, char *argv[] ) +int main(int argc, char *argv[]) { MPI_Request r[3]; - MPI_Status s[3]; + MPI_Status s[3]; int *buf0, *buf1, *buf2; int rank, size, src, dest, flag, errs = 0; int n0, n1, n2; MPI_Comm comm; - MTest_Init( &argc, &argv ); + MTest_Init(&argc, &argv); - MPI_Comm_size( MPI_COMM_WORLD, &size ); + MPI_Comm_size(MPI_COMM_WORLD, &size); if (size < 2) { - fprintf( stderr, "Must run with at least 2 processes\n" ); - MPI_Abort( MPI_COMM_WORLD, 1 ); + fprintf(stderr, "Must run with at least 2 processes\n"); + MPI_Abort(MPI_COMM_WORLD, 1); } - MPI_Comm_rank( MPI_COMM_WORLD, &rank ); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); dest = 0; - src = 1; + src = 1; comm = MPI_COMM_WORLD; n0 = n1 = n2 = 65536; - buf0 = (int *)malloc( n0 * sizeof(int) ); - buf1 = (int *)malloc( n1 * sizeof(int) ); - buf2 = (int *)malloc( n2 * sizeof(int) ); + buf0 = (int *) malloc(n0 * sizeof(int)); + buf1 = (int *) malloc(n1 * sizeof(int)); + buf2 = (int *) malloc(n2 * sizeof(int)); if (!buf0 || !buf1 || !buf2) { - fprintf( stderr, "Unable to allocate buffers of size %d\n", - n0 * (int)sizeof(int) ); - MPI_Abort( MPI_COMM_WORLD, 1 ); + fprintf(stderr, "Unable to allocate buffers of size %d\n", n0 * (int) sizeof(int)); + MPI_Abort(MPI_COMM_WORLD, 1); } - memset( buf0, -1, n0 * sizeof(int) ); - memset( buf1, -1, n0 * sizeof(int) ); - memset( buf2, -1, n0 * sizeof(int) ); + memset(buf0, -1, n0 * sizeof(int)); + memset(buf1, -1, n0 * sizeof(int)); + memset(buf2, -1, n0 * sizeof(int)); if (rank == dest) { - MPI_Irecv( buf0, n0, MPI_INT, src, 0, comm, &r[0] ); - MPI_Irecv( buf1, n1, MPI_INT, src, 1, comm, &r[1] ); - MPI_Irecv( buf2, n2, MPI_INT, src, 2, comm, &r[2] ); - - MPI_Barrier( comm ); + MPI_Irecv(buf0, n0, MPI_INT, src, 0, comm, &r[0]); + MPI_Irecv(buf1, n1, MPI_INT, src, 1, comm, &r[1]); + MPI_Irecv(buf2, n2, MPI_INT, src, 2, comm, &r[2]); - MPI_Cancel( &r[1] ); - MPI_Barrier( comm ); - memset( s, -1, sizeof(s) ); - MPI_Waitall( 3, r, s ); - MPI_Test_cancelled( &s[0], &flag ); + MPI_Barrier(comm); + + MPI_Cancel(&r[1]); + MPI_Barrier(comm); + memset(s, -1, sizeof(s)); + MPI_Waitall(3, r, s); + MPI_Test_cancelled(&s[0], &flag); if (flag) { - errs++; - printf( "request 0 was cancelled!\n" ); - } - MPI_Test_cancelled( &s[1], &flag ); + errs++; + printf("request 0 was cancelled!\n"); + } + MPI_Test_cancelled(&s[1], &flag); if (!flag) { - errs++; - printf( "request 1 was not cancelled!\n" ); - } - MPI_Test_cancelled( &s[2], &flag ); + errs++; + printf("request 1 was not cancelled!\n"); + } + MPI_Test_cancelled(&s[2], &flag); if (flag) { - errs++; - printf( "request 2 was cancelled!\n" ); - } - MPI_Barrier( comm ); + errs++; + printf("request 2 was cancelled!\n"); + } + MPI_Barrier(comm); } if (rank == src) { - int tflag; - MPI_Barrier( comm ); - MPI_Barrier( comm ); - MPI_Send( buf0, n0, MPI_INT, dest, 0, comm ); - MPI_Isend( buf2, n2, MPI_INT, dest, 2, comm, &r[1] ); - MPI_Isend( buf1, n1, MPI_INT, dest, 4, comm, &r[0] ); - MPI_Cancel( &r[0] ); - memset( s, -3, sizeof(s) ); - s[0].MPI_ERROR = -3; - s[1].MPI_ERROR = -3; - MPI_Testall( 2, r, &tflag, s ); - if (tflag) { - MPI_Test_cancelled( &s[0], &flag ); - if (!flag) { - errs++; - printf( "send request 0 was not cancelled!\n" ); - } - MPI_Test_cancelled( &s[1], &flag ); - if (flag) { - errs++; - printf( "send request 1 was cancelled!\n" ); - } - } - else { - /* If all requests are not complete, then neither r nor s - may be changed */ - if ( (s[0].MPI_ERROR) != -3) { - errs++; - printf( "Send request status 0 modified. s[0].MPI_ERROR = %x\n", - s[0].MPI_ERROR ); - } - if ( (s[1].MPI_ERROR) != -3) { - errs++; - printf( "Send request status 1 modified. s[1].MPI_ERROR = %x\n", - s[1].MPI_ERROR ); - } - } - MPI_Barrier( comm ); - while (!tflag) { - MPI_Testall( 2, r, &tflag, s ); - } - MPI_Test_cancelled( &s[0], &flag ); - if (!flag) { - errs++; - printf( "send request 0 was not cancelled!\n" ); - } - MPI_Test_cancelled( &s[1], &flag ); - if (flag) { - errs++; - printf( "send request 1 was cancelled!\n" ); - } + int tflag; + MPI_Barrier(comm); + MPI_Barrier(comm); + MPI_Send(buf0, n0, MPI_INT, dest, 0, comm); + MPI_Isend(buf2, n2, MPI_INT, dest, 2, comm, &r[1]); + MPI_Isend(buf1, n1, MPI_INT, dest, 4, comm, &r[0]); + MPI_Cancel(&r[0]); + memset(s, -3, sizeof(s)); + s[0].MPI_ERROR = -3; + s[1].MPI_ERROR = -3; + MPI_Testall(2, r, &tflag, s); + if (tflag) { + MPI_Test_cancelled(&s[0], &flag); + if (!flag) { + errs++; + printf("send request 0 was not cancelled!\n"); + } + MPI_Test_cancelled(&s[1], &flag); + if (flag) { + errs++; + printf("send request 1 was cancelled!\n"); + } + } + else { + /* If all requests are not complete, then neither r nor s + * may be changed */ + if ((s[0].MPI_ERROR) != -3) { + errs++; + printf("Send request status 0 modified. s[0].MPI_ERROR = %d\n", s[0].MPI_ERROR); + } + if ((s[1].MPI_ERROR) != -3) { + errs++; + printf("Send request status 1 modified. s[1].MPI_ERROR = %d\n", s[1].MPI_ERROR); + } + } + MPI_Barrier(comm); + while (!tflag) { + MPI_Testall(2, r, &tflag, s); + } + MPI_Test_cancelled(&s[0], &flag); + if (!flag) { + errs++; + printf("send request 0 was not cancelled!\n"); + } + MPI_Test_cancelled(&s[1], &flag); + if (flag) { + errs++; + printf("send request 1 was cancelled!\n"); + } } if (rank != src && rank != dest) { - MPI_Barrier( comm ); - MPI_Barrier( comm ); - MPI_Barrier( comm ); + MPI_Barrier(comm); + MPI_Barrier(comm); + MPI_Barrier(comm); } - MTest_Finalize( errs ); + MTest_Finalize(errs); MPI_Finalize(); return 0;