礼拜堂-GASNET MPI基板的多语言环境配置问题

时间:2018-12-03 15:42:12

标签: mpi chapel gasnet

我在Chapel中拥有一个带有分布式迭代器的永久代码,我正在尝试在集群上运行它。

使用UDP管道时,代码可以完美运行。

现在,我正在尝试将可移植MPI用作内部层-没有成功。

这是我的配置:

export CHPL_TASKS=qthreads

export CHPL_COMM=gasnet

export CHPL_COMM_SUBSTRATE=mpi

export CHPL_LAUNCHER=gasnetrun_mpi

仅使用此配置,仅使用了一个节点。在查看Gasnet文档时,我添加了:

export GASNET_NODEFILE="$(pwd)"/nodes

export MPIRUN_CMD='mpirun -np %N -machinefile %H %C'

(官方文档中缺少这些详细信息)。

好,现在我可以使用MPI运行Chapel代码了。但是:

1)每个节点具有32个核心。如果我输入hello6 -nl x,x <33,则所有进程均由第一个语言环境执行。

1.1)我想运行hello6 -nl 4,所以每个节点都会从区域设置x,地址x.address向您问好。

2)看起来Chapel使用$OAR_NODEFILE(也许是另一个)来创建Locales向量,因为此OAR_NODEFILE每个核心的每个节点都有一个条目。

3)但是,即使我同时手动更改了$GASNET_NODEFILE$OAR_NODEFILE,区域设置矢量对于每个CPU节点每个内核仍然包含一个条目。

4)在我可以访问的群集中,我运行如下的mpi代码:mpirun -machinefile $OAR_NODEFILE ~/program。但是,GASNET需要导出的最后一个变量的语法。

有人可以帮助我配置运行时以在多个语言环境中执行我的代码吗?

最诚挚的问候,

Tiago Carneiro。

1 个答案:

答案 0 :(得分:3)

假设您使用的是Chapel 1.18版本和Open MPI(请问是否不正确。)Chapel 1.18和更早版本中存在一个错误,其中在使用Open MPI时,所有Chapel实例都首先打包到单个节点上。此问题已在主服务器(https://github.com/chapel-lang/chapel/pull/11546)上修复,该修复程序将包含在1.19版本中。

您可以尝试使用git master,或者可以将MPIRUN_CMD="mpirun --bind-to none --map-by ppr:1:node -np %N %P %A"设置为解决方法。