Here我读了
如果没有提供要执行的副本数量的值(即, 命令行上既没有提供“-np”也没有它的同义词, Open MPI会自动执行每个程序的副本 进程槽(见下面有关“进程槽”的描述)
所以我希望
mpirun program
运行该程序的八个副本(实际上是一个简单的hello世界),因为我有一个英特尔®酷睿™i7-2630QM CPU @ 2.00GHz×8,但它没有:它只运行一个进程。 / p>
答案 0 :(得分:6)
如果未指定要使用的进程数,mpirun
会尝试从(指定的)默认主机文件中获取它们。来自corresponding section of the man page you linked:
如果主机文件未提供插槽信息,则假定默认值为1。
由于您没有修改此文件(我假设),mpirun
将仅使用一个插槽。
在我的机器上,默认主机文件位于
/etc/openmpi-x86_64/openmpi-default-hostfile
答案 1 :(得分:1)
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将与环境集成并自动从预留中构建主机和插槽列表。