我正在尝试设置MPI群集。但我有一个问题,即没有正确使用添加到mpd.conf文件中的CPU数量。 我有三个Ubuntu服务器。 opteron有48个核心 calc1有8个核心 含有8个核心的calc2。
我的mpd.hosts看起来像:
opteron:46
calc1:6
calc2:6
启动后(mpdboot -n 3 -f mpd.hosts)系统正在运行。 mpdtrace - >所有这三个都被列出来了。
但运行像“mpiexec -n 58 raxmlHPC-MPI ...”这样的程序会导致calc1和calc2进入很多工作,而opteron会同时进入很少的工作。 我做错了什么?
此致
比约恩
答案 0 :(得分:1)
我找到了解决方法。 我为mpiexec命令使用了附加参数“-machinefile /path/to/mpd.hosts”。现在,所有节点都正常运行。 我遇到的一个问题是我收到了以下错误消息:
... MPIU_SHMW_Seg_create_attach_templ(671):打开失败 - 没有这样的文件或目录......
要修复它,我必须设置环境变量MPICH_NO_LOCAL=1
答案 1 :(得分:1)
如您所知,您必须将机器文件传递给mpdboot
和mpiexec
才能使用每个主机进程计数。 “开放式失败”问题是MPD中的一个已知错误,即您正在使用的流程管理器。请注意,MPICH_NO_LOCAL=1
解决方法可行,但可能会导致内部节点通信的性能损失。
您显然正在使用MPICH2(或MPICH2衍生产品),但目前尚不清楚您使用的是哪个版本。如果可以,我强烈建议升级到MPICH2 1.2.1p1或(更好)1.3.1。这两个版本都包含一个名为hydra的更新的流程管理器,它更快,更强大。在1.3.1中,hydra是默认的流程管理器。它不需要mpdboot
阶段,它支持$HYDRA_HOST_FILE
环境变量,因此您不必在每个mpiexec
上指定机器文件。