将节点进程与MPI和FORTRAN一起分类

Mat*_*ara 5 hostname mpi multiprocessing cpu-cores nodes

我正在尝试使用MPI和Fortran进行实现,将同一节点上的进程分成组.MPI有一个可以识别的常规吗?

我有想法通过主机名分隔这些进程,这些主机名在我正在使用的机器的节点上是相同的.但我不知道它是否适用于所有集群.

Wes*_*and 7

您可能想要查看MPI_COMM_SPLIT_TYPE.它将允许您根据split_type您传入的现有通信器作为参数进行拆分:

int MPI_Comm_split_type(MPI_Comm comm, int split_type, int key,
                        MPI_Info info, MPI_Comm *newcomm)
Run Code Online (Sandbox Code Playgroud)

现在,唯一的split_type是MPI_COMM_TYPE_SHARED,在标准中定义为:

此类型将通信器拆分为子通信器,每个子通信器可以创建共享内存区域.

这通常与您要求的相同,但您必须仔细检查它在您的机器上是否正确.

您需要知道的另一件事是,这是MPI-3中的新功能,因此可能无法在MPI的所有实现中使用.我知道它可用于MPICH及其衍生产品.AFAIK,它在Open MPI的最后一个版本中不可用.因此,请确保您拥有实际支持它的MPI版本.