Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] program with MPI enabled subroutine
From: Arunkumar C R (arunkumar.cr_at_[hidden])
Date: 2010-04-22 18:14:48


A fortran 90 code having MPI enabled subroutine is written. The subroutine
part is given below,

program abc
        .................. !usual statements
       open(20, file='sum.20', action='write')
       open(30, file='sum.40', action='write')
       n2= 100; nstep=50
       do step=1, nstep
              n1 = step
              sum2 = (n2 - n1 + 1) * (2*n1 + (n2 - n1 )) /
2 !from arithmetic progression
              call routine
              write(20, *) step, sum1, sum2
        end do
end program abc

subroutine routine
!module 'dat' with common variables for both program & subroutine
        use mpi
        implicit none
        integer::ivar, istart, iend, sumt, i

        if(step.eq.1) call mpi_init(ierr)
        call mpi_comm_rank(mpi_comm_world, irank, ierr)
        call mpi_comm_size(mpi_comm_world, np, ierr)
        ivar = (n2 - n1) / np + 1
        istart= min(irank * ivar + 1, n2 + 1)
        iend = min(istart + ivar - 1, n2)
        sum1 = 0
        do i=istart, iend
                sum1= sum1 + i
        end do

        call mpi_reduce(sum1, sumt, 1, mpi_integer, mpi_sum, 0,
mpi_comm_world, ierr)
        sum1 = sumt
        if(irank.eq.0) then
              write(30, *) step, sum1, sum2
        end if
        if(step.eq.nstep) call mpi_finalize(ierr)
end subroutine routine

The current problem is that once the subroutine is called the data written
to sum.30 and sum.20 are not matching.
If there's no mistake with the calculation part, how shall it be possible to
get the same data in both the files. I could
see some of the 'sum1' values in sum.20 are not correct.

I expect some good replies.

Thanks in advance.