gpt4 book ai didi

mpi - 使用 mpirun 和不使用 mpirun 运行程序的区别

转载 作者:行者123 更新时间:2023-12-04 03:04:35 35 4
gpt4 key购买 nike

我使用 MPI_Open_port 在 MPI 中实现了点对点连接和 MPI_Comm_accept .我使用运行服务器和客户端程序

rafael@server1:~$ mpirun server
rafael@server2:~$ mpirun client

在不同的计算机上。我注意到
rafael@server1:~$ ./server
rafael@server2:~$ ./client

也工作得很好。您知道在使用和不使用 mpirun 的情况下启动 MPI 可执行文件有什么区别吗? ?

当然,我不能给出额外的参数(例如 mpirun --mca btl self,openib ),并且所有进程的等级都是0,这完全没问题。但还有什么不那么明显的吗?

最佳答案

没有运行 mpirun/mpiexec被称为“单例 MPI_INIT”,是 MPI 对高质量实现建议的一部分,可在最新 MPI 标准文档的 §10.5.2 下找到:

A high-quality implementation will allow any process (including those not started with a "parallel application" mechanism) to become an MPI process by calling MPI_INIT. Such a process can then connect to other MPI processes using the MPI_COMM_ACCEPT and MPI_COMM_CONNECT routines, or spawn other MPI processes. MPI does not mandate this behavior, but strongly encourages it where technically feasible.

If a process enters MPI_INIT and determines that no special steps were taken (i.e., it has not been given the information to form an MPI_COMM_WORLD with other processes) it succeeds and forms a singleton MPI program, that is, one in which MPI_COMM_WORLD has size 1.


使用 mpirun在您的情况下是标准文本中提到的“并行应用程序”机制。它提供 MPI_INIT与建立所需的信息 MPI_COMM_WORLD在所有启动的进程。没有来自 mpirun 的信息进程只能作为单例 MPI 实例运行,因此所有进程都具有排名 0 (这没关系,因为每个 MPI_COMM_WORLD 都是一个单独的)。

关于mpi - 使用 mpirun 和不使用 mpirun 运行程序的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15578009/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com