这是我的简单代码,而我想在我的程序中使用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