默认通信器的名称是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
Run Code Online (Sandbox Code Playgroud)
这是有效的,并且排名达到了正确的值; 但是,如果MPI_COMM_WORLD恰好是除零之外的某些值,我认为这不会起作用.
我不认为你可以依靠mpi_comm_world存在0; 我刚检查了一个mpif.h我躺在那里的文件,其价值是91.我认为你很幸运mpicomm在调用中传递了一个未初始化的变量(你的)作为输入参数mpi_comm_rank.
既然mpi_comm_world是,就Fortran而言,只是一个整数,为什么不插入行
mpicomm = mpi_comm_world
Run Code Online (Sandbox Code Playgroud)
在你第一次使用之前mpicomm?你甚至可以这样声明它
integer, parameter :: mpicomm = mpi_comm_world
Run Code Online (Sandbox Code Playgroud)