3 integer ierr, errs, toterrs
5 integer status(MPI_STATUS_SIZE)
6 integer rank, size, buf(10)
12 call MPI_Comm_size( MPI_COMM_WORLD, size, ierr )
14 print *, 'Must have at least two processes'
15 call MPI_Abort( MPI_COMM_WORLD, 1, ierr )
17 call MPI_Comm_rank( MPI_COMM_WORLD, rank, ierr )
22 call MPI_Isend( buf, 10, MPI_INTEGER, size - 1, 1,
23 $ MPI_COMM_WORLD, request, ierr )
24 call MPI_Wait( request, status, ierr )
26 if (rank .eq. size - 1) then
27 call MPI_Irecv( buf, 10, MPI_INTEGER, 0, 1, MPI_COMM_WORLD,
29 C call MPI_Wait( request, status, ierr )
32 call MPI_Test( request, flag, status, ierr )
37 if (buf(i) .ne. i) then
43 call MPI_Allreduce( errs, toterrs, 1, MPI_INTEGER, MPI_SUM,
44 $ MPI_COMM_WORLD, ierr )
46 if (toterrs .gt. 0) then
47 print *, "Found ", toterrs, " Errors"
52 call MPI_Finalize( ierr )