没有选项的 mpirun 仅在一个进程上运行程序

mpirun without options runs a program on one process only

Here 我读了

If no value is provided for the number of copies to execute (i.e., neither the "-np" nor its synonyms are provided on the command line), Open MPI will automatically execute a copy of the program on each process slot (see below for description of a "process slot")

所以我希望

mpirun program

到 运行 程序的八个副本(实际上是一个简单的 hello world),因为我有一个 Intel® Core™ i7-2630QM CPU @ 2.00GHz × 8,但它没有' t: 它只是 运行 一个进程。

如果您没有指定要使用的进程数,mpirun 会尝试从(指定或)默认主机文件中获取它们。来自 corresponding section of the man page you linked

If the hostfile does not provide slots information, a default of 1 is assumed.

由于您没有修改此文件(我假设),mpirun 将仅使用一个插槽。


在我的机器上,默认主机文件位于

/etc/openmpi-x86_64/openmpi-default-hostfile

i7-2630QM 是 4 核 CPU,每个核有两个硬件线程。对于计算密集型程序,您最好启动四个 MPI 进程而不是八个。

只需使用 mpiexec -n 4 ...,因为您不需要主机文件来在执行 mpiexec 的同一节点上启动进程。

在远程节点上启动 MPI 进程时使用主机文件。如果您真的需要创建一个,请执行以下操作:

hostname slots=4 max_slots=8

(将hostname替换为机器的主机名)

运行程序为

mpiexec -hostfile name_of_hostfile ...
如果您的 MPI 程序可以使用超线程,

max_slots=8 允许您使用最多八个 MPI 进程超额订阅节点。您还可以将环境变量 OMPI_MCA_orte_default_hostfile 设置为主机文件的完整路径,而不是每次都显式地将其作为参数传递给 mpiexec.

如果您碰巧使用分布式资源管理器,如 Torque、LSF、SGE 等,那么,如果正确编译,Open MPI 会与环境集成并自动从预留中构建主机和插槽列表。