【问题标题】:makeMPIcluster under TORQUE: There are not enough slots availableTORQUE下的makeMPIcluster:没有足够的可用插槽
【发布时间】:2016-03-19 08:57:06
【问题描述】:

我正在使用具有 TORQUE/MOAB/RHEL 6.7 的 HPC。 PBS作业脚本中的相关行是

#PBS -l nodes=1:ppn=8,mem=12gb
module load r_3.2.0 
module load icc_14.0.3-ompi_1.8.3
mpirun -np 1\
  --mca mtl mx --mca pml cm --bind-to core --map-by core\
  Rscript >>dice.txt 2>&1 diceEstimate4i_parallel.R

在我的 R 程序中,我有:

library(Rmpi)
library(snow)
cl <- makeMPIcluster(mpi.universe.size())

我可以看到 MPI Universe 的大小是正确的(在此示例中为 8),但程序失败并显示错误消息“没有足够的可用插槽”。但是,如果我要求少一名工人,效果会很好:

cl <- makeMPIcluster(mpi.universe.size() - 1)

但现在我只有 7 名工人(我已经测试过了),所以其中一个处理器核心没有从事任何生产性工作......

R CMD config CC

只给我mpicc,我在其余配置中找不到任何相关内容。

任何想法如何使用所有分配的 cpu?我是 mpirun 的初学者,所有这些......我在没有调度程序的不同服务器上工作。我还能够通过pbdMPI 包使用所有已分配的CPU。

【问题讨论】:

  • 一个猜测,mpirun -np 1 在远程节点中启动了 1 个处理器来运行 R 脚本,它使用了 1 个内核,然后在 R 内核中再次创建 8 个。所以,没有足够的核心。
  • 谢谢,我也有类似的想法。但是将includemaster=TRUE 添加到makeMPIcluster 似乎并没有改变任何东西。我也找不到该选项的任何文档,或如何设置 MPI 集群的更详细信息。
  • 你可以尝试只通过 pbs 启动 rscript 而不使用 mpirun 或者不绑定到核心吗?
  • 我可以尝试(当当前工作完成时。)我怀疑是否在没有 mpirun 的情况下启动它,但没有尝试过,但谷歌很快就显示了调用 R w/o mpirun 时出现的许多问题.不过两者都可以尝试。
  • 是的,我明天会尝试重现您的案例。我会回复你我的结果:)

标签: r mpi hpc torque


【解决方案1】:

所以,“官方”答案。现在我已经对代码进行了多次测试,并且可以正常工作:

  1. 在没有 mpirun 的作业脚本中调用 R。
  2. 检测集群大小并创建 MPICluster。

作业脚本可能如下所示:

module load r_3.2.0 
module load icc_14.0.3-ompi_1.8.3
Rscript program.R

以及创建集群的 R 代码:

nodefile <- Sys.getenv("PBS_NODEFILE")
nodes <- readLines(nodefile)
cl <- makeMPIcluster(length(nodes), includemaster=TRUE)

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 2019-03-04
    • 2018-03-03
    • 2017-07-20
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多