1

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

4

1 回答 1

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
于 2013-09-10T18:44:16.900 回答