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

Fortran 如何为MPI通信器选择自己的名称?,fortran,mpi,Fortran,Mpi,默认通信器的名称为MPI_COMM_WORLD。我希望它在我的程序中是mpicomm。如何将通信器设置为所需的名称 请注意,我的程序已经在使用这个变量名“mpicomm”工作了,但我从来没有告诉程序这应该是通信器的名称。我猜当我运行程序时,MPI_COMM_WORLD的值是0,MPI COMM的值也是0。但我不想因为侥幸成功 例如: program main use mpi implicit none integer :: mpierr, mpicomm, rank call MPI_Init(

默认通信器的名称为MPI_COMM_WORLD。我希望它在我的程序中是mpicomm。如何将通信器设置为所需的名称

请注意,我的程序已经在使用这个变量名“mpicomm”工作了,但我从来没有告诉程序这应该是通信器的名称。我猜当我运行程序时,MPI_COMM_WORLD的值是0,MPI COMM的值也是0。但我不想因为侥幸成功

例如:

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恰好是零以外的值,我认为这是行不通的。

我认为你不能依赖
MPI_COMM_WORLD
0
;我刚刚检查了一个
mpif.h
文件,其中的值是
91
。我认为您很幸运在调用
mpi\u comm\u rank
时传递了一个未初始化的变量(您的
mpicomm
)作为输入参数

既然就Fortran而言,
mpi\u comm\u world
只是一个整数,为什么不插入该行呢

mpicomm = mpi_comm_world
在首次使用mpicomm之前?你甚至可以这样声明

integer, parameter :: mpicomm = mpi_comm_world

我认为你不能指望mpi_comm_world是
0
;我刚刚检查了一个
mpif.h
文件,其中的值是
91
。我认为您很幸运在调用
mpi\u comm\u rank
时传递了一个未初始化的变量(您的
mpicomm
)作为输入参数

既然就Fortran而言,
mpi\u comm\u world
只是一个整数,为什么不插入该行呢

mpicomm = mpi_comm_world
在首次使用mpicomm之前?你甚至可以这样声明

integer, parameter :: mpicomm = mpi_comm_world

是的,那会有用的。简单而有效。我不知道为什么我没有想到这一点。谢谢。是的,那会有用的。简单而有效。我不知道为什么我没有想到这一点。谢谢