0

我正在测试由另一个用户提供和编译的 OpenMPI,(我正在使用指向他的所有 bin、include 等目录的软链接 - 所有必需目录)但我遇到了这个奇怪的事情:

首先,如果我使用 -n 设置 <= 10 运行 mpirun,我可以在下面运行它。testrunmpi.py 只是打印出“运行”。从每个核心。

# I am in serverA.
bash-3.2$ /home/karl/bin/mpirun -n 10 ./testrunmpi.py
run. 
run. 
run. 
run. 
run. 
run. 
run. 
run. 
run. 
run. 

但是,当我尝试运行 -n 超过 10 时,我会遇到:

bash-3.2$ /home/karl/bin/mpirun -n 24 ./testrunmpi.py
karl@serverB's password: Could not chdir to home directory /home/karl: No such file or directory
bash: /home/karl/bin/orted: No such file or directory
--------------------------------------------------------------------------
A daemon (pid 19203) died unexpectedly with status 127 while attempting
to launch so we are aborting.

There may be more information reported by the environment (see above).

This may be because the daemon was unable to find all the needed shared
libraries on the remote node. You may set your LD_LIBRARY_PATH to have the
location of the shared libraries on the remote nodes and this will
automatically be forwarded to the remote nodes.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun noticed that the job aborted, but has no info as to the process
that caused that situation.
--------------------------------------------------------------------------
bash-3.2$
bash-3.2$
Permission denied, please try again.
karl@serverB's password:
Permission denied, please try again.
karl@serverB's password:

我看到工作被分派到 serverB,而我在 serverA 上。我在 serverB 上没有任何帐户。但是如果我调用 mpirun -n <= 10,工作将在 serverA 上。

这很奇怪,所以我检查了 /home/karl/etc/openmpi-default-hostfile,并尝试设置以下内容:

serverA slots=24 max_slots=24
serverB slots=0 max_slots=32

但是问题仍然存在,并且仍然发出与上面相同的错误消息。为了让我的程序仅在 serverA 上运行,我必须做什么?

4

1 回答 1

1

Open MPI 中的默认主机文件是系统范围的,即它的位置是在构建和安装库时确定的,并且没有用户特定的版本。可以通过运行如下ompi_info命令获得实际位置:

$ ompi_info --param orte orte | grep orte_default_hostfile
MCA orte: parameter "orte_default_hostfile" (current value: <LOOK HERE>, data source: default value)

您可以通过几种不同的方式覆盖主机列表。首先,您可以-hostfile通过mpirun. 如果是这样,您不必在其中放置具有零插槽的主机 - 只需省略您无权访问的机器。例如:

localhost slots=10 max_slots=10
serverA slots=24 max_slots=24

orte_default_hostfile您还可以通过设置MCA 参数来更改默认主机文件的路径:

$ mpirun --mca orte_default_hostfile /path/to/your/hostfile -n 10 executable

--mca您可以在导出的环境变量中设置值,而不是每次都传递选项OMPI_MCA_orte_default_hostfile。这可以在 shell 的 dot-rc 文件中设置,例如,.bashrc如果使用 Bash。

您还可以通过-H(or -host) 选项直接指定节点列表。

于 2013-01-23T10:11:24.430 回答