2 * This code tests waitany; in one version of MPICH, it uncovered some
3 * problems with the ADI Test calls.
5 /* #define i_ntotin 256 */ /* ok */
6 /* #define i_ntotin 257 */ /* fails */
12 #if defined(NEEDS_STDLIB_PROTOTYPES)
16 #define DAR 32 /* ``Data: ARray'' */
19 int main( int argc, char **argv )
24 MPI_Init(&argc, &argv) ;
25 MPI_Comm_rank(MPI_COMM_WORLD, &locId) ;
31 MPI_Status status[2] ;
32 MPI_Request events [2] ;
40 for(i = 0 ; i < i_ntotin ; i++)
43 events [0] = MPI_REQUEST_NULL ;
44 events [1] = MPI_REQUEST_NULL ;
46 MPI_Isend(data, i_ntotin, MPI_INT, dstId, DAR,
47 MPI_COMM_WORLD, events + 1) ;
48 /* enable send of data */
50 /*_begin_trace_code */
51 /* printf("locId = %d: MPI_Isend(%x, %d, %x, %d, %d, %x, %x)\n",
52 locId, data, i_ntotin, MPI_INT, dstId, DAR, MPI_COMM_WORLD, events [1]);
56 /*_begin_trace_code */
57 /* printf("locId = %d: MPI_Waitany(%d, [%x, %x], %x %x)...",
58 locId, 2, events [0], events [1], &eventId, &status) ; */
61 MPI_Waitany(2, events, &eventId, status) ;
63 /*_begin_trace_code */
64 printf("done. eventId = %d\n", eventId) ;
74 int srcId = MPI_ANY_SOURCE ;
76 /*_begin_trace_code */
78 printf("locId = %d: MPI_Recv(%x, %d, %x, %d, %d, %x, %x)...",
79 locId, data, i_ntotin, MPI_INT, srcId, DAR, MPI_COMM_WORLD, &status) ;
83 MPI_Recv(data, i_ntotin, MPI_INT, srcId, DAR,
84 MPI_COMM_WORLD, &status) ;
86 /*_begin_trace_code */
87 /*printf("done.\n") ;*/
91 printf("locId = %d: data [0] = %d, data [%d] = %d\n",
92 locId, data [0], i_ntotin - 1, data [i_ntotin - 1]) ;
96 MPI_Barrier( MPI_COMM_WORLD );
98 printf( "Test complete\n" );