It would help if you would include the error messages you encounter.

You need to call MPI_Init(ierr) before you can call (just about) any other MPI call. E.g., add "call MPI_Init(ierr)" as the first executable statement of your "program prog".

The error I get with your program is

*** An error occurred in MPI_Comm_f2c
*** before MPI was initialized
*** MPI_ERRORS_ARE_FATAL (your MPI job will now abort)

I suppose that message could be clearer.

If I add the MPI_Init call, things work fine.

Arunkumar C R wrote:

I have encountered some run time errors in the general purpose program given below. Could you please assist me in correcting this. The MPI code is written in Fortran 90. The concept of subroutine is used because I want to write program for another scientific problem.

module data
        use mpi
        implicit none
        integer::np, ierr, irank
end module

program prog
        use data
        implicit none

        integer::trial, ntrials

insert "call mpi_init(ierr)" here

        ntrials=10
do trial=1, ntrials
               call mpi_comm_rank(mpi_comm_world, irank, ierr)
               call mpi_comm_size(mpi_comm_world,    np, ierr)
               write(1, *) 'trial no=', trial
               write(1, *) 'irank      np'
call process !subroutine call
        end do
        print*,'Program completed!'
        call mpi_finalize(ierr)
end

subroutine process !subroutine
        use data
        implicit none

        if(irank.eq.0) then
                write(10, *) irank, np
        end if
end subroutine process

Could you please run the program and let e know the error?

Reply via email to