mpiexec需要启动 MPI 进程的节点列表。一般来说,它可以通过两种方式获取列表。
第一种方法是通过与某种分布式资源管理器集成,例如 SGE、Torque、LSF 等。它们通常为每个作业提供授予节点的列表,然后 MPI 启动器可以解析该列表并提取必要的信息。在这种情况下,通常只需运行即可mpiexec -n #procs ./executable。
第二种方法是手动提供列表。这通常通过命令行选项(如-H在 Open MPI 中)或通过所谓的主机文件来完成。主机文件通常会列出作业应执行的节点的主机名以及每个节点上的插槽数。Open MPI 的一个示例主机文件是:
node0001 slots=2
node0002 slots=2
node0003 slots=2
node0004 slots=2
slots=2在这种情况下,告诉库每个节点提供两个插槽,这意味着最多可以在该节点上启动两个 MPI 进程。插槽数是一个任意值,不需要与 CPU/内核数匹配,但在大多数情况下,插槽数将与内核数匹配(尽管对于混合 MPI+线程作业可能并非如此)。
给定上述主机文件,可以像这样启动 MPI 作业:
mpiexec --hostfile /path/to/hostfile -n 8 ...
在远程节点上启动作业通常要求当前用户能够使用一些无密码机制登录到这些节点,例如公钥认证。