Linux集群、Rmpi和进程数
Linux cluster, Rmpi and number of 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 的 R 中的并行程序,您需要根据系统配置作业脚本。接下来在命令行上:
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 --slave -f sunhpc_mpi.r
在R代码上,你不能详细说明任何东西'startMPIcluster()'所以,代码将完全按照我上面写的。
自 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 的 R 中的并行程序,您需要根据系统配置作业脚本。接下来在命令行上:
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 --slave -f sunhpc_mpi.r
在R代码上,你不能详细说明任何东西'startMPIcluster()'所以,代码将完全按照我上面写的。