1

我正在尝试建立一个 MPI 集群。但是我的问题是添加到 mpd.conf 文件中的 CPU 数量没有正确使用。我有三台 Ubuntu 服务器。具有 48 个内核的 opteron 具有 8 个内核的 calc1 具有 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 同时获得很少的工作。我究竟做错了什么?

问候

比约恩

4

2 回答 2

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.

于 2010-11-18T20:37:11.033 回答
1

我找到了解决方法。我为 mpiexec 命令使用了附加参数“-machinefile /path/to/mpd.hosts”。现在,所有节点都正常运行。我遇到的一个问题是我收到以下错误消息:

... MPIU_SHMW_Seg_create_attach_templ(671):打开失败 - 没有这样的文件或目录 ...

要修复它,我必须设置环境变量MPICH_NO_LOCAL=1

于 2010-11-01T15:26:22.790 回答