- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在努力设置一个 MPI 集群,遵循 Setting Up an MPICH2 Cluster in Ubuntu教程。我正在运行一些东西,我的机器文件是这样的:
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 在 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 - how to run MPI process on machines where locations of hydra_pmi_proxy are different? , 与我的不同,但这里也可能是这种情况。 2.该死的,我所知道的唯一的九头蛇是一个希腊岛屿,我错过了什么? :/
最佳答案
我想说您已经确定了 Hydra 的真正缺点:应该有某种方式告诉它其他节点上的路径是不同的。
pythagoras上的mpich安装在哪里? geocomp 上的 mpich 安装在哪里?
在最简单的配置中,例如,您将拥有一个公共(public)主目录,并且您会将 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 版本-日期是“MPICH2 到 MPICH”的转换,没有这样的保证。
抛开 ABI,您有一个需要 hydra 启动器(debian 8 版本)的 MPICH 和一个需要 MPD 启动器的 MPICH。 (debian 6 版本)
即使您确实有足够新的软件包,唯一可行的方法是在所有机器上使用相同的架构。正如 Ken 指出的那样,ABI 并不意味着支持异构环境。
删除发行包并在两台机器上自行构建 MPICH。
关于c - 庆典 :/usr/bin/hydra_pmi_proxy: No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605380/
我是一名优秀的程序员,十分优秀!