program example10 C Example is uncomlete!!! include 'mpif.h' integer rank, size, ierr, N, MAXPROC parameter(N = 1000, MAXPROC = 128) integer req(MAXPROC), num, indexes(MAXPROC) integer statuses(MPI_STATUS_SIZE, MAXPROC) double precision a(N, MAXPROC) call MPI_INIT(ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) if(rank .ne. 0) then do while(.TRUE.) call slave(a, N) call MPI_SEND(a, N, MPI_DOUBLE_PRECISION, 0, 5, & MPI_COMM_WORLD, ierr) end do else do i = 1, size-1 call MPI_IRECV(a(1, i), N, MPI_DOUBLE_PRECISION, i, & 5, MPI_COMM_WORLD, req(i), ierr) end do do while(.TRUE.) call MPI_WAITSOME(size-1, req, num, indexes, & statuses, ierr) do i = 1, num call master(a(1, indexes(i)), N) call MPI_IRECV(a(1, indexes(i)), N, & MPI_DOUBLE_PRECISION, & indexes(i), 5, MPI_COMM_WORLD, & req(indexes(i)), ierr) end do end do end if call MPI_FINALIZE(ierr) end subroutine slave(a, n) double precision a integer n C обработка локальной части массива a end subroutine master(a, n) double precision a integer n C обработка массива a end