X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d0ffc37686edcc803601f76ab51fdfed5fc2f241..4d648ebbbe5705878080b9cbf1ca61497323c592:/teshsuite/smpi/mpich3-test/pt2pt/probe-unexp.c diff --git a/teshsuite/smpi/mpich3-test/pt2pt/probe-unexp.c b/teshsuite/smpi/mpich3-test/pt2pt/probe-unexp.c index 43e2ed85a7..358d67c923 100644 --- a/teshsuite/smpi/mpich3-test/pt2pt/probe-unexp.c +++ b/teshsuite/smpi/mpich3-test/pt2pt/probe-unexp.c @@ -11,7 +11,7 @@ #define NUM_MSGS_PER_BUF_SIZE 5 char buf[1 << MAX_BUF_SIZE_LG]; -/* +/* * This program verifies that MPI_Probe() is operating properly in the face of * unexpected messages arriving after MPI_Probe() has * been called. This program may hang if MPI_Probe() does not return when the @@ -24,137 +24,123 @@ int main(int argc, char **argv) int msg_size_lg; int errs = 0; int mpi_errno; - + MTest_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &p_size); MPI_Comm_rank(MPI_COMM_WORLD, &p_rank); /* To improve reporting of problems about operations, we - change the error handler to errors return */ - MPI_Comm_set_errhandler( MPI_COMM_WORLD, MPI_ERRORS_RETURN ); - - - for (msg_size_lg = 0; msg_size_lg <= MAX_BUF_SIZE_LG; msg_size_lg++) - { - const int msg_size = 1 << msg_size_lg; - int msg_cnt; - - MTestPrintfMsg( 2, "testing messages of size %d\n", msg_size ); - for (msg_cnt = 0; msg_cnt < NUM_MSGS_PER_BUF_SIZE; msg_cnt++) - { - MPI_Status status; - const int tag = msg_size_lg * NUM_MSGS_PER_BUF_SIZE + msg_cnt; - - MTestPrintfMsg( 2, "Message count %d\n", msg_cnt ); - if (p_rank == 0) - { - int p; - - for (p = 1; p < p_size; p ++) - { - /* Wait for synchronization message */ - mpi_errno = MPI_Recv(NULL, 0, MPI_BYTE, MPI_ANY_SOURCE, - tag, MPI_COMM_WORLD, &status); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - - if (status.MPI_TAG != tag && errs++ < 10) - { - printf("ERROR: unexpected message tag from MPI_Recv(): lp=0, rp=%d, expected=%d, actual=%d, count=%d\n", - status.MPI_SOURCE, status.MPI_TAG, tag, msg_cnt); - } + * change the error handler to errors return */ + MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN); + + + for (msg_size_lg = 0; msg_size_lg <= MAX_BUF_SIZE_LG; msg_size_lg++) { + const int msg_size = 1 << msg_size_lg; + int msg_cnt; + + MTestPrintfMsg(2, "testing messages of size %d\n", msg_size); + for (msg_cnt = 0; msg_cnt < NUM_MSGS_PER_BUF_SIZE; msg_cnt++) { + MPI_Status status; + const int tag = msg_size_lg * NUM_MSGS_PER_BUF_SIZE + msg_cnt; + + MTestPrintfMsg(2, "Message count %d\n", msg_cnt); + if (p_rank == 0) { + int p; + + for (p = 1; p < p_size; p++) { + /* Wait for synchronization message */ + mpi_errno = MPI_Recv(NULL, 0, MPI_BYTE, MPI_ANY_SOURCE, + tag, MPI_COMM_WORLD, &status); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + + if (status.MPI_TAG != tag && errs++ < 10) { + printf + ("ERROR: unexpected message tag from MPI_Recv(): lp=0, rp=%d, expected=%d, actual=%d, count=%d\n", + status.MPI_SOURCE, status.MPI_TAG, tag, msg_cnt); + } # if defined(VERBOSE) - { - printf("sending message: p=%d s=%d c=%d\n", - status.MPI_SOURCE, msg_size, msg_cnt); - } + { + printf("sending message: p=%d s=%d c=%d\n", + status.MPI_SOURCE, msg_size, msg_cnt); + } # endif - - /* Send unexpected message which hopefully MPI_Probe() is - already waiting for at the remote process */ - mpi_errno = MPI_Send (buf, msg_size, MPI_BYTE, - status.MPI_SOURCE, status.MPI_TAG, MPI_COMM_WORLD); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - } - } - else - { - int incoming_msg_size; - - /* Send synchronization message */ - mpi_errno = MPI_Send(NULL, 0, MPI_BYTE, 0, tag, MPI_COMM_WORLD); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - - /* Perform probe, hopefully before the master process can - send its reply */ - mpi_errno = MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, - MPI_COMM_WORLD, &status); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - mpi_errno = MPI_Get_count(&status, MPI_BYTE, &incoming_msg_size); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - if (status.MPI_SOURCE != 0 && errs++ < 10) - { - printf("ERROR: unexpected message source from MPI_Probe(): p=%d, expected=0, actual=%d, count=%d\n", - p_rank, status.MPI_SOURCE, msg_cnt); - } - if (status.MPI_TAG != tag && errs++ < 10) - { - printf("ERROR: unexpected message tag from MPI_Probe(): p=%d, expected=%d, actual=%d, count=%d\n", - p_rank, tag, status.MPI_TAG, msg_cnt); - } - if (incoming_msg_size != msg_size && errs++ < 10) - { - printf("ERROR: unexpected message size from MPI_Probe(): p=%d, expected=%d, actual=%d, count=%d\n", - p_rank, msg_size, incoming_msg_size, msg_cnt); - } - - /* Receive the probed message from the master process */ - mpi_errno = MPI_Recv(buf, msg_size, MPI_BYTE, 0, tag, - MPI_COMM_WORLD, &status); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - mpi_errno = MPI_Get_count(&status, MPI_BYTE, &incoming_msg_size); - if (mpi_errno != MPI_SUCCESS && errs++ < 10) - { - MTestPrintError(mpi_errno); - } - if (status.MPI_SOURCE != 0 && errs++ < 10) - { - printf("ERROR: unexpected message source from MPI_Recv(): p=%d, expected=0, actual=%d, count=%d\n", - p_rank, status.MPI_SOURCE, msg_cnt); - } - if (status.MPI_TAG != tag && errs++ < 10) - { - printf("ERROR: unexpected message tag from MPI_Recv(): p=%d, expected=%d, actual=%d, count=%d\n", - p_rank, tag, status.MPI_TAG, msg_cnt); - } - if (incoming_msg_size != msg_size && errs++ < 10) - { - printf("ERROR: unexpected message size from MPI_Recv(): p=%d, expected=%d, actual=%d, count=%d\n", - p_rank, msg_size, incoming_msg_size, msg_cnt); - } - } - } + + /* Send unexpected message which hopefully MPI_Probe() is + * already waiting for at the remote process */ + mpi_errno = MPI_Send(buf, msg_size, MPI_BYTE, + status.MPI_SOURCE, status.MPI_TAG, MPI_COMM_WORLD); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + } + } + else { + int incoming_msg_size; + + /* Send synchronization message */ + mpi_errno = MPI_Send(NULL, 0, MPI_BYTE, 0, tag, MPI_COMM_WORLD); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + + /* Perform probe, hopefully before the master process can + * send its reply */ + mpi_errno = MPI_Probe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &status); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + mpi_errno = MPI_Get_count(&status, MPI_BYTE, &incoming_msg_size); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + if (status.MPI_SOURCE != 0 && errs++ < 10) { + printf + ("ERROR: unexpected message source from MPI_Probe(): p=%d, expected=0, actual=%d, count=%d\n", + p_rank, status.MPI_SOURCE, msg_cnt); + } + if (status.MPI_TAG != tag && errs++ < 10) { + printf + ("ERROR: unexpected message tag from MPI_Probe(): p=%d, expected=%d, actual=%d, count=%d\n", + p_rank, tag, status.MPI_TAG, msg_cnt); + } + if (incoming_msg_size != msg_size && errs++ < 10) { + printf + ("ERROR: unexpected message size from MPI_Probe(): p=%d, expected=%d, actual=%d, count=%d\n", + p_rank, msg_size, incoming_msg_size, msg_cnt); + } + + /* Receive the probed message from the master process */ + mpi_errno = MPI_Recv(buf, msg_size, MPI_BYTE, 0, tag, MPI_COMM_WORLD, &status); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + mpi_errno = MPI_Get_count(&status, MPI_BYTE, &incoming_msg_size); + if (mpi_errno != MPI_SUCCESS && errs++ < 10) { + MTestPrintError(mpi_errno); + } + if (status.MPI_SOURCE != 0 && errs++ < 10) { + printf + ("ERROR: unexpected message source from MPI_Recv(): p=%d, expected=0, actual=%d, count=%d\n", + p_rank, status.MPI_SOURCE, msg_cnt); + } + if (status.MPI_TAG != tag && errs++ < 10) { + printf + ("ERROR: unexpected message tag from MPI_Recv(): p=%d, expected=%d, actual=%d, count=%d\n", + p_rank, tag, status.MPI_TAG, msg_cnt); + } + if (incoming_msg_size != msg_size && errs++ < 10) { + printf + ("ERROR: unexpected message size from MPI_Recv(): p=%d, expected=%d, actual=%d, count=%d\n", + p_rank, msg_size, incoming_msg_size, msg_cnt); + } + } + } } - MTest_Finalize( errs ); + MTest_Finalize(errs); MPI_Finalize(); return 0; }