我在使用fortran的MPI中遇到了这个奇怪的事情,MPI_Barrier无法工作

时间:2018-01-14 10:25:23

标签: fortran mpi

这是我的简单代码,而我想在我的程序中使用MPI_BARRIER。我认为我的代码没有错误,因为我已经添加了参数错误。

program main
use mpi
implicit none
integer :: myid, numprocs, rc,ierr,i
call MPI_INIT(ierr)
call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr )
call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)
    print*,"iter 1"
    if(myid.eq.0) then
        print*,"running",myid
    else
        print*,"running",myid
    endif
    print*,"waiting",myid
    call MPI_BARRIER(MPI_COMM_WORLD,ierr)
    print*,"end"

call MPI_FINALIZE(rc)
end program main

我尝试使用

运行它
 mpirun -np 2 ./test

总是有如下错误

 iter 1
 running           0
 waiting           0
 iter 1

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x10392d579
#1  0x10392c945
#2  0x7fff90dc7b39

YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault: 11 (signal 11)

我使用MPICH3.2和gfortran.fortran文件是f90。我真的不知道如何解决它。谢谢你的帮助。

我的MPICH或编译程序的方式可能有问题。 由于我使用Mac OS,我只是使用MPICH

brew install gcc
brew install mpich

虽然我用它来编译

mpif90 -fc=gfortran test.f90 -o test

0 个答案:

没有答案