MPI Fortran 90 two nested loop summation parallelized

to compile, use

mpif90 parallelize_loop.mpi.f90

to run, use

mpirun -np 2 ./a.out

Contents of "parallelize_loop.mpi.f90":

program exampleParallel

implicit none

include 'mpif.h'

INTEGER :: numcpu, rank, ierr

INTEGER :: loop1Indx, loop2Indx

INTEGER :: loop1Limit, loop2Limit

INTEGER :: current_val, summd_val,all_summd

loop1Limit=numcpu

loop2Limit=3

current_val=0

summd_val=0

call MPI_INIT(ierr)

call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)

call MPI_COMM_SIZE(MPI_COMM_WORLD, numcpu, ierr)

write(*,*) 'Number of CPUs=',numcpu,' My rank=',rank

loop1Indx = rank+1

do loop2Indx = 1, loop2Limit

current_val = loop2Indx+(loop1Indx-1)*loop2Limit

write(*,*) current_val, ' from CPU ', rank

summd_val = summd_val+current_val

enddo

call MPI_REDUCE(summd_val,all_summd,1,MPI_INTEGER,MPI_SUM,0,MPI_COMM_WORLD,ierr)

if (ierr.NE.MPI_SUCCESS) then

write(*,*) 'mpi_reduce validgaincount failed, ierr=',ierr,'rank=',rank

stop

endif

if (rank.eq.0) then

write(*,*) 'all summed value is ', all_summd

endif

call mpi_finalize(ierr)

end program