根据我的了解,mpirun
和mpiexec
都是启动器。有人能告诉我mpiexec
和mpirun
之间的确切差异吗?
mpiexec
是MPI标准(至少是最近版本)中定义的命令,有关详细信息,请参阅这些标准(您喜欢的搜索引擎将为您找到)。
mpirun
是许多MPI实现中实现的命令。然而,它从未被标准化,并且在不同实现之间经常存在着微妙的差异。有关详细信息,请参阅您选择的实现的文档。
是的,它们都用于启动MPI程序,但现在mpiexec
通常更可取,因为它是标准化的。
我知道这个问题已经被回答了,但我认为答案并不是最好的。我在这里遇到了一些使用mpirun时的集群问题,并查看了一下mpirun和mpiexec之间的区别。这就是我发现的:
描述
mpiexec是mpich包中脚本mpirun的替代程序。它用于从PBS批处理或交互环境中初始化并行作业。mpiexec使用PBS的任务管理库,在PBS分配的节点上生成可执行文件的副本。
使用mpiexec而不是脚本(mpirun)或外部守护程序(mpd)的原因:
- 使用TM接口启动任务比为每个进程单独调用rsh或ssh快得多。
- 使用mpiexec计算出生产的进程所使用的资源,并在PBS日志中报告,因为与使用启动脚本(如mpirun)不同,所有并行作业的进程都在PBS的控制下。
- PBS会干净地终止超过分配的CPU时间、挂钟时间、内存使用量或磁盘空间限制的任务。当使用mpiexec时,进程很难摆脱资源管理器的控制。
- 您可以使用mpiexec来执行安全策略。如果所有作业都需要使用mpiexec和PBS执行环境启动,则不需要在集群中启用rsh或ssh访问计算节点。