IMPLICIT REAL*8(A-H,O-Z) INTEGER*8 i, n, ns, nn DIMENSION pis(50) include 'mpif.h' call mpi_init(ierr) call mpi_comm_size(MPI_COMM_WORLD,np,ierr) call mpi_comm_rank(MPI_COMM_WORLD,nr,ierr) n = 1000000000 n = n*10 nn = n/np ns = nn*nr pi = 0.0 s = 1.0 C$omp parallel do private(i,x) reduction(+:pi) do i=ns+1,ns+nn x = i pi = pi + 6.0/x**2 end do C$omp end parallel do call mpi_gather(pi,1,MPI_REAL8,pis,1,MPI_REAL8, 1 0,MPI_COMM_WORLD,ierr) if(nr.eq.0) then pi = 0.0 do i=1,np pi = pi + pis(i) end do pi = sqrt(pi) WRITE(6,*) 'np=',np,', n=',n,', pi=',pi end if call mpi_finalize(ierr) STOP END