bash: /usr/bin/hydra_pmi_proxy: 没有那个文件或目录

bash: /usr/bin/hydra_pmi_proxy: No such file or directory

我正在按照 Setting Up an MPICH2 Cluster in Ubuntu 教程努力设置 MPI 集群。我有一些东西 运行ning 我的机器文件是这样的:

pythagoras:2  # this will spawn 2 processes on pythagoras
geomcomp      # this will spawn 1 process on geomcomp

教程指出:

and run it (the parameter next to -n specifies the number of processes to spawn and distribute among nodes): mpiu@ub0:~$ mpiexec -n 8 -f machinefile ./mpi_hello

使用 -n 1 和 -n 2 运行 没问题,但是使用 -n 3 就失败了,如下所示:

gsamaras@pythagoras:/mirror$ mpiexec -n 1 -f machinefile ./mpi_hello            
Hello from processor 0 of 1
gsamaras@pythagoras:/mirror$ mpiexec -n 2 -f machinefile ./mpi_hello
Hello from processor 0 of 2
Hello from processor 1 of 2
gsamaras@pythagoras:/mirror$ mpiexec -n 3 -f machinefile ./mpi_hello
bash: /usr/bin/hydra_pmi_proxy: No such file or directory
{hungs up}

也许-n 旁边的那个参数指定了机器的数量?我的意思是进程数在机器文件中说明,不是吗?另外,我为 MPI 集群使用了 2 台机器(希望是这种情况,我得到的输出不仅来自主节点(即毕达哥拉斯),还来自从节点(即 geomcomp))。

Edit_1

好吧,我认为 -n 旁边的参数实际上指定了进程数,因为在我链接的教程中,它使用了 4 台机器,机器文件暗示 8 个进程将 运行。那么为什么我们需要 -n 旁边的那个参数呢?不管是什么原因,我仍然不明白为什么我的 运行 以 -n 3.

失败

Edit_2

在 Edit_1 之后,-n 3 是合乎逻辑的,因为我的机器文件暗示要生成 3 个进程。

Edit_3

我认为问题出在它试图在从属节点(即 geomcomp)中生成进程时。

Edit_4

pythagoras 运行s 在 Debian 8 上,而 geomcomp 运行s 在 Debian 6 上。机器具有相同的架构。问题出在 geomcomp,因为我在那里尝试 mpiexec -n 1 ./mpi_hello 并说没有守护进程 运行s.

所以,我得到了 毕达哥拉斯:

gsamaras@pythagoras:~$ mpichversion
MPICH Version:      3.1
MPICH Release date: Thu Feb 20 11:41:13 CST 2014
MPICH Device:       ch3:nemesis
MPICH configure:    --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --enable-shared --prefix=/usr --enable-fc --disable-rpath --disable-wrapper-rpath --sysconfdir=/etc/mpich --libdir=/usr/lib/x86_64-linux-gnu --includedir=/usr/include/mpich --docdir=/usr/share/doc/mpich --with-hwloc-prefix=system --enable-checkpointing --with-hydra-ckpointlib=blcr
MPICH CC:   gcc -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fstack-protector-strong -Wformat -Werror=format-security  -O2
MPICH CXX:  g++ -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fstack-protector-strong -Wformat -Werror=format-security
MPICH F77:  gfortran -g -O2 -fstack-protector-strong -g -O2 -fstack-protector-strong -O2
MPICH FC:   gfortran -g -O2 -fstack-protector-strong -g -O2 -fstack-protector-strong
gsamaras@pythagoras:~$ which mpiexec
/usr/bin/mpiexec
gsamaras@pythagoras:~$ which mpirun
/usr/bin/mpirun

geomcomp 我得到了:

gsamaras@geomcomp:~$ mpichversion
-bash: mpichversion: command not found
gsamaras@geomcomp:~$ which mpiexec
/usr/bin/mpiexec
gsamaras@geomcomp:~$ which mpirun
/usr/bin/mpirun

我按照教程的指示安装了MPICH2。我应该怎么办?我正在主节点上处理 /mirror。它挂载在slave节点上。

1.这个相关问题, mpiexec.hydra - how to run MPI process on machines where locations of hydra_pmi_proxy are different?, 与我的不同,但这里也可能是这种情况。 2.该死的,我所知道的唯一的九头蛇是一个希腊岛屿,我错过了什么? :/

我想说您已经确定了 Hydra 的真正缺点:应该有某种方式告诉它其他节点上的路径是不同的。

pythagoras 上的 mpich 安装在哪里? geocomp 上的 mpich 安装在哪里?

在最简单的配置中,例如,您将拥有一个公共主目录,并且将 mpich 安装到 ${HOME}/soft/mpich 中。

Hydra 可能不会在远程计算机上启动 "login shell"。如果将 MPICH 安装路径添加到 PATH 环境变量中,则必须在 .bashrc(或任何与 shell 等效的文件)中执行此操作。

要对此进行测试,请尝试 'ssh geocomp mpichversion' 和 'ssh pythagoras mpichversion' 以及普通的 'mpichversion'。这应该告诉您一些关于您的环境是如何设置的。

你的情况,你的环境真的很奇怪! debian 8 和 debian 6,它看起来甚至不是相同版本的 MPICH。我认为,由于 ABI 倡议,MPICH-3.1 和更新版本将与 MPICH-3.1 一起工作,但是如果你有一个 MPICH 版本-日期 "MPICH2 to MPICH" 转换,没有这样的保证。

抛开 ABI,您有一个需要 hydra 启动器(debian 8 版本)的 MPICH 和一个需要 MPD 启动器的 MPICH。 (debian 6 版本)

即使您确实有足够新的软件包,唯一可行的方法是您在所有机器上使用相同的体系结构。正如 Ken 指出的那样,ABI 并不意味着支持异构环境。

删除发行包并在两台机器上自行构建 MPICH。