mpiexec与mpirun的区别

73

根据我的了解,mpirunmpiexec都是启动器。有人能告诉我mpiexecmpirun之间的确切差异吗?


mpiexec 例如在主机名文件中接受 host:num_processes 的表示法,而 mpirun 似乎不接受该表示法(至少对于 mvapich2 不是)。 - Andre Holzner
2个回答

84

mpiexec是MPI标准(至少是最近版本)中定义的命令,有关详细信息,请参阅这些标准(您喜欢的搜索引擎将为您找到)。

mpirun是许多MPI实现中实现的命令。然而,它从未被标准化,并且在不同实现之间经常存在着微妙的差异。有关详细信息,请参阅您选择的实现的文档。

是的,它们都用于启动MPI程序,但现在mpiexec通常更可取,因为它是标准化的。


即时回答!干杯 :)! - Animesh Karnewar

32

我知道这个问题已经被回答了,但我认为答案并不是最好的。我在这里遇到了一些使用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访问计算节点。

参考: https://www.osc.edu/~djohnson/mpiexec/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接