默认通信器的名称是MPI_COMM_WORLD。我希望它在我的程序中是mpicomm。如何将通信器设置为我想要的名称?
请注意,我的程序已经在使用这个变量名称'mpicomm'了,但我从来没有告诉程序这应该是通信器的名称。我猜MPI_COMM_WORLD的值是0,所以当我运行程序时'mpicomm'。但由于侥幸,我不希望这种情况发生。
例如:
program main
use mpi
implicit none
integer :: mpierr, mpicomm, rank
call MPI_Init(mpierr)
call MPI_Comm_rank(mpicomm,rank,mpierr)
call MPI_Finalize(mpierr)
end program main
这是有效的,并且排名达到了正确的值;但是,如果MPI_COMM_WORLD恰好是零之外的值,我认为这不会起作用。
答案 0 :(得分:5)
我认为你不能依赖mpi_comm_world
0
;我刚检查了一个mpif.h
文件,我的文件位于91
。我认为你幸运地通过一个未初始化的变量(你的mpicomm
)作为mpi_comm_rank
调用中的输入参数。
因为mpi_comm_world
,就Fortran而言,只是一个整数,为什么不插入行
mpicomm = mpi_comm_world
首次使用mpicomm
之前?你甚至可以像这样声明它
integer, parameter :: mpicomm = mpi_comm_world