5 int main( int argc, char **argv )
7 int rank, np, data = 777;
11 MPI_Init( &argc, &argv );
12 MPI_Comm_rank( MPI_COMM_WORLD, &rank );
13 MPI_Comm_size( MPI_COMM_WORLD, &np );
17 printf( "4 processors or more required, %d done\n", rank );
22 MPI_Isend( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
23 MPI_Wait( &handle, &status );
24 MPI_Irecv( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
25 MPI_Wait( &handle, &status );
26 MPI_Isend( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
27 MPI_Wait( &handle, &status );
28 MPI_Irecv( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
29 MPI_Wait( &handle, &status );
32 MPI_Irecv( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
33 MPI_Wait( &handle, &status );
34 MPI_Isend( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
35 MPI_Wait( &handle, &status );
36 MPI_Isend( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
37 MPI_Wait( &handle, &status );
38 MPI_Irecv( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
39 MPI_Wait( &handle, &status );
42 MPI_Isend( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
43 MPI_Wait( &handle, &status );
44 MPI_Irecv( &data, 1, MPI_INT, 3, 0, MPI_COMM_WORLD, &handle );
45 MPI_Wait( &handle, &status );
46 MPI_Irecv( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
47 MPI_Wait( &handle, &status );
48 MPI_Isend( &data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &handle );
49 MPI_Wait( &handle, &status );
52 MPI_Irecv( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
53 MPI_Wait( &handle, &status );
54 MPI_Isend( &data, 1, MPI_INT, 2, 0, MPI_COMM_WORLD, &handle );
55 MPI_Wait( &handle, &status );
56 MPI_Irecv( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
57 MPI_Wait( &handle, &status );
58 MPI_Isend( &data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD, &handle );
59 MPI_Wait( &handle, &status );