2016-12-08 12 views
1

С начала ноября я застрял, чтобы запустить параллельное задание в кластере Linux. Я уже ищу ЛОТ в Интернете, ища информацию, но я просто не могу прогрессировать. Когда я начинаю искать параллелизм в R, используя кластер, я обнаружил Rmpi. Это выглядело довольно просто, но теперь мне больше нечего делать. У меня есть сценарий, чтобы отправить свою работу:Кластер Linux, 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 без параметра и использовать в командной строке -np 1)?

2. Почему, когда я использую эти команды, MPI жалуется на это?

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

OBS: Он сказал, что для всех 64 процессов (потому что есть 8 узлов с 8 процессорами и я создаю 63 процессов)

3- Почему, когда я использую эти команды на машине 60 CPU он просто порождает двух рабочих?

+0

Мне никогда не удавалось создать кластер 'R', правильно работающий с' MPI'. Я действительно не тот, кто легко сдается, но, в конце концов, я вернулся к использованию кластеров 'PSOCK' ... Надеюсь, что кто-то из SO может дать вам более обнадеживающие новости. – cryo111

+0

Вы попробовали 'cl <- startMPIcluster (count = 63)'? – webb

+0

На самом деле, нет. Вам не нужно передавать параметр этой функции. Спасибо, в любом случае :) – olegario

ответ

0

Наконец-то, я понял!

Для запуска параллельной программы в R с использованием 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 --slave -f sunhpc_mpi.r

В коде R вы ничего не должны детализировать «startMPIcluster()» Итак, код будет таким же, как я написал выше.