bash:/ usr / bin / hydra_pmi_proxy:没有这样的文件或目录

在Ubuntu教程中设置MPICH2集群后,我正在努力设置MPI集群。 我有运行的东西,我的机器文件是这样的:

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

该教程指出:

并运行它(-n旁边的参数指定在节点之间生成和分发的进程数):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在Debian 8上运行,而geomcomp在Debian 6上运行。这些机器具有相同的架构。 问题在于geomcomp,因为我在那里尝试了mpiexec -n 1 ./mpi_hello并且说没有守护进程运行。

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

 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 。 它安装在从节点上。

1.这个相关的问题, mpiexec.hydra – 如何在hydra_pmi_proxy的位置不同的机器上运行MPI过程? ,与我的不同,但也可能就是这种情况。 该死的,我认识的唯一的Hydra是一个希腊岛屿,我错过了什么? :/

我说你已经确定了Hydra的真正缺点:应该有一些方法告诉它其他节点上的路径是不同的。

在毕达哥拉斯上安装了mpich? 在geocomp上安装mpich在哪里?

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

Hydra可能没有在远程计算机上启动“登录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,那么-dates“MPICH2 to MPICH”转换,没有这样的gaurantees。

除了设置ABI之外,你还有一个期望水力发射器(debian 8版本)的MPICH和一个期望MPD发射器的MPICH。 (debian 6版)

即使你有最新的软件包,但事情可行的唯一方法就是在所有机器上拥有相同的架构。 肯指出,ABI并不意味着对异构环境的支持。

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