X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/69e6c3b1ce23f7f750cc5f2cd416ff60296a1dcb..a286e57018d2ef03257affb9fe1e73e0b8d08a3d:/teshsuite/smpi/mpich-test/pt2pt/waitany.c diff --git a/teshsuite/smpi/mpich-test/pt2pt/waitany.c b/teshsuite/smpi/mpich-test/pt2pt/waitany.c new file mode 100644 index 0000000000..2e71fd08de --- /dev/null +++ b/teshsuite/smpi/mpich-test/pt2pt/waitany.c @@ -0,0 +1,104 @@ +/* + * This code tests waitany; in one version of MPICH, it uncovered some + * problems with the ADI Test calls. + */ +/* #define i_ntotin 256 */ /* ok */ +/* #define i_ntotin 257 */ /* fails */ +#define i_ntotin 256 /* fails */ + +#include +#include "mpi.h" + +#if defined(NEEDS_STDLIB_PROTOTYPES) +#include "protofix.h" +#endif + +#define DAR 32 /* ``Data: ARray'' */ + + +int main( int argc, char **argv ) + { + int locId ; + int data [i_ntotin] ; + + MPI_Init(&argc, &argv) ; + MPI_Comm_rank(MPI_COMM_WORLD, &locId) ; + + if(locId == 0) { + + /* The server... */ + + MPI_Status status[2] ; + MPI_Request events [2] ; + + int eventId ; + + int dstId = 1 ; + + int i ; + + for(i = 0 ; i < i_ntotin ; i++) + data [i] = i + 1 ; + + events [0] = MPI_REQUEST_NULL ; + events [1] = MPI_REQUEST_NULL ; + + MPI_Isend(data, i_ntotin, MPI_INT, dstId, DAR, + MPI_COMM_WORLD, events + 1) ; + /* enable send of data */ + + /*_begin_trace_code */ + /* printf("locId = %d: MPI_Isend(%x, %d, %x, %d, %d, %x, %x)\n", + locId, data, i_ntotin, MPI_INT, dstId, DAR, MPI_COMM_WORLD, events [1]); + */ + /*_end_trace_code */ + + /*_begin_trace_code */ + /* printf("locId = %d: MPI_Waitany(%d, [%x, %x], %x %x)...", + locId, 2, events [0], events [1], &eventId, &status) ; */ + /*_end_trace_code */ + + MPI_Waitany(2, events, &eventId, status) ; + + /*_begin_trace_code */ + printf("done. eventId = %x\n", eventId) ; + /*_end_trace_code */ + } + + if(locId == 1) { + + /* The Client... */ + + MPI_Status status ; + + int srcId = MPI_ANY_SOURCE ; + + /*_begin_trace_code */ + /* + printf("locId = %d: MPI_Recv(%x, %d, %x, %d, %d, %x, %x)...", + locId, data, i_ntotin, MPI_INT, srcId, DAR, MPI_COMM_WORLD, &status) ; + */ + /*_end_trace_code */ + + MPI_Recv(data, i_ntotin, MPI_INT, srcId, DAR, + MPI_COMM_WORLD, &status) ; + + /*_begin_trace_code */ + /*printf("done.\n") ;*/ + /*_end_trace_code */ + + /* + printf("locId = %d: data [0] = %d, data [%d] = %d\n", + locId, data [0], i_ntotin - 1, data [i_ntotin - 1]) ; + */ + } + + MPI_Barrier( MPI_COMM_WORLD ); + if (locId == 0) + printf( "Test complete\n" ); + MPI_Finalize() ; + return 0; +} + + +