PROGRAM example2 IMPLICIT NONE INCLUDE 'mpif.h' INTEGER, PARAMETER :: maxn = 14000 INTEGER :: i, mymaxn, n INTEGER :: nproc, myid, mpi_err REAL (8) :: a, b, c CHARACTER(MPI_MAX_PROCESSOR_NAME):: hostname INTEGER :: nhostchars CALL mpi_init(mpi_err) CALL mpi_comm_rank(mpi_comm_world,myid,mpi_err) CALL mpi_comm_size(mpi_comm_world,nproc,mpi_err) CALL mpi_get_processor_name(hostname,nhostchars,mpi_err) mymaxn = maxn/nproc IF (myid==0) THEN mymaxn = maxn - (nproc-1)*mymaxn END IF a = 0 DO i = 1, mymaxn call random_number(b) call random_number(c) a = a + b + c END DO PRINT *, 'Host number:', myid, ' (',hostname(1:nhostchars),')', & ' Number of iterations:', mymaxn, & ' Result: ', a CALL mpi_reduce(a,b,1,mpi_double_precision,mpi_sum,0,mpi_comm_world, & mpi_err) CALL mpi_reduce(mymaxn,n,1,mpi_integer,mpi_sum,0,mpi_comm_world,mpi_err) IF (myid==0) THEN PRINT *,('-',i=1,32) PRINT *, 'Host number:', myid, ' Total number of iterations:', n, & ' Result: ', b END IF CALL mpi_finalize(mpi_err) END PROGRAM example2