如何为MPI通信器选择自己的名字?

时间:2013-09-10 18:26:47

标签: fortran mpi

默认通信器的名称是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恰好是零之外的值,我认为这不会起作用。

1 个答案:

答案 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