R- Linux群集,RMPI和Procesess数量



自11月初以来,我一直坚持在Linux群集中运行并行作业。我已经在互联网上搜索了很多搜索信息,但是我根本无法进步。当我开始使用群集在R中搜索并行性时,我发现了RMPI。看起来很简单,但是现在我不再做什么。我有一个可以发送工作的脚本:

#PBS -S /bin/bash
#PBS -N ANN_residencial
#PBS -q linux.q
#PBS -l nodes=8:ppn=8
cd $PBS_O_WORKDIR
source /hpc/modulos/bash/R-3.3.0.sh
export LD_LIBRARY_PATH=/hpc/nlopt-2.4.2/lib:$LD_LIBRARY_PATH
export CPPFLAGS='-I/hpc/nlopt-2.4.2/include '$CPPFLAGS
export PKG_CONFIG_PATH=/hpc/nlopt-2.4.2/lib/pkgconfig:$PKG_CONFIG_PATH
# OPENMPI 1.10 + GCC 5.3
source /hpc/modulos/bash/openmpi-1.10-gcc53.sh
mpiexec --mca orte_base_help_aggregate 0 -np 1 -hostfile ${PBS_NODEFILE} /hpc/R-3.3.0/bin/R --slave -f sunhpc_mpi.r

这是我的R程序的开始:

library(caret)
library(Rmpi)
library(doMPI)
cl <- startMPIcluster()
registerDoMPI(cl)

所以这是我的问题:

1-我应该初始化进程(即使用starmpicluster whitout参数并在命令行-np 1中使用)?

2-为什么当我使用此命令时,MPI向它的frase抱怨?

An MPI process has executed an operation involving a call to the
"fork()" system call to create a child process....

obs:他说,对于所有64个过程(因为有8个节点带有8个CPU,我正在创建63个过程)

3-为什么当我在60 CPU的机器上使用此命令时,他刚刚产生了两个工人?

最后,我明白了!

要使用rmpi在群集中运行一个并行程序,您需要根据系统配置作业脚本。下一个命令行:

mpiexec --mca orte_base_help_aggregate 0 -np 1 -hostfile ${PBS_NODEFILE} /hpc/R-3.3.0/bin/R --slave -f sunhpc_mpi.r

您必须修改为:

mpiexec -np num_proc -hostfile $ {pbs_nodefile}/hpc/r-3.3.0/bin/r-r-slave -slave -f sunhpc_mpi.r

在R代码上,您不得详细说明" startmpicluster()",因此,代码将完全如我上面写的。

最新更新