module mpi include 'mpif.h' end module mpi module cpuids integer::myid,totps, ierr end module cpuids program example02 use mpi use cpuids call mpiinit call demo02 call mpi_finalize(ierr) stop end subroutine mpiinit use mpi use cpuids call mpi_init( ierr ) call mpi_comm_rank( & mpi_comm_world,myid,ierr) call mpi_comm_size( & mpi_comm_world,totps,ierr) return end subroutine demo02 use mpi use cpuids integer:: m, i real*8 :: s, mys if(myid.eq.0) then write(*,*)'how many terms?' read(*,*) m end if call mpi_bcast(m,1, & mpi_integer,0, & mpi_comm_world,ierr) mys=0.0d0 do i=myid,m,totps mys=mys+dsqrt(dfloat(i)) end do write(*,*)'rank:', myid, & 'mys=',mys, ' m:',m s=0.0d0 call mpi_reduce(mys,s,1, & mpi_real8,mpi_sum,0, & mpi_comm_world,ierr) if(myid.eq.0) then write(*,*)'total sum: ', s end if return end