/* ibctest.c test program for the ibcast library needs at least two processes ! */ #include <stdio.h> #include "ibcast.h" void main(int argc, char *argv[]) { int data1; int data2; int me; /* rank in WORLD */ Ibcast_handle *request1; Ibcast_handle *request2; MPI_Init(&argc, &argv); /* enroll in MPI */ MPI_Comm_rank(MPI_COMM_WORLD, &me); if (me == 0) { data1 = 42; } if (me == 1) { data2 = 4711; } /* start two different broadcasts */ Ibcast(&data1, 1, MPI_INT, 0, MPI_COMM_WORLD, &request1); Ibcast(&data2, 1, MPI_INT, 1, MPI_COMM_WORLD, &request2); /* do some computations */ /* finish broadcast */ Ibcast_wait(&request1); Ibcast_wait(&request2); /* show that everything worked */ printf("me = %3d, data1 = %8d data2 = %8d\n", me, data1, data2); MPI_Finalize(); }