2016-03-27 20 views
3

Here我读的mpirun不带选项上的一个过程只

如果没有提供值的份数执行运行的程序(即,被设置在 既不是“-np”,也不是它的同义词命令行), 打开MPI将自动执行该程序的每个 处理槽的副本(参见下面的“处理缝隙”)的描述

因此,我期望

mpirun program 

运行八个程序副本(实际上是一个简单的Hello World),因为我有一个英特尔®酷睿™i7-2630QM CPU @ 2.00GHz×8,但它不:它只是运行一个进程。

回答

5

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

如果hostfile不提供插槽信息,则默认为1。

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


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

/etc/openmpi-x86_64/openmpi-default-hostfile 
+0

我的机器上的这个文件只是评论。我应该如何修改它? –

+1

@EnricoMariaDeAngelis我从来没有碰过那个文件。如果我需要一个自定义的主机文件,我创建一个新的。语法在链接的文档中进行了描述。 –

0

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

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

在远程节点上启动MPI进程时使用主机文件。如果你真的需要创建一个,下面应该这样做:

hostname slots=4 max_slots=8 

运行程序(与机器的主机名代替hostname)作为

mpiexec -hostfile name_of_hostfile ... 

max_slots=8让你如果您的MPI程序可以使用超线程,则可以用多达8个MPI进程超量订阅节点。您还可以将环境变量OMPI_MCA_orte_default_hostfile设置为主机文件的完整路径,而不是将其每次都作为参数明确传递给mpiexec

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

+0

那么是不是没有办法让'mpirun program'像核心(或线程)的数字一样运行尽可能多的进程?这听起来很奇怪,因为在mac上我也使用了(2 x 3.2 GHz四核Intel Xeon),如果我没有指定'-np'选项,则会运行8个进程。区别在哪里? –

+0

它取决于MPI实施以及任何全局或本地设置。也许该Mac系统上的MPI库是专门配置的,或者安装了不同的MPI实现。使用Open MPI,您可以创建自己的默认主机文件,并将环境变量“OMPI_MCA_orte_default_hostfile”设置为该文件的完整路径。 –

相关问题