2014-11-23 2 views
1

Я последовал инструкциям здесь «http://math.acadiau.ca/ACMMaC/Rmpi/sample.html». Вот мой код RRmpi ​​не может вызвать процесс по узлам

library("Rmpi") 
mpi.spawn.Rslaves() 
.Last <- function(){ 
if (is.loaded("mpi_initialize")){ 
    if (mpi.comm.size(1) > 0){ 
     print("Please use mpi.close.Rslaves() to close slaves.") 
     mpi.close.Rslaves() 
    } 
    print("Please use mpi.quit() to quit R") 
    .Call("mpi_finalize") 
    } 
} 
mpi.remote.exec(paste("I am",mpi.comm.rank(),"of",mpi.comm.size()-1,"on",mpi.get.processor.name())) 
mpi.close.Rslaves() 
mpi.quit() 

И в сценарии я обозначил номер процесса:

#$ -S /bin/sh 
#$ -pe orte 20 
#$ -cwd 
#$ -V 
#$ -o /data1/users/liuyang/R/rmpi.o 
#$ -e /data1/users/liuyang/R/rmpi.e 
mpiexec -np 1 R --slave CMD BATCH rmpi.R 

Но я нашел код R работать только на главном узле, и mpi.spawn.Rslaves() только порождают 12 процессов (основной номер процессора главного узла).

Кластер - кластер sge, и я установил пакет Rmpi ​​с openmpi версии 1.4.3. Так в чем причина?

Я также попытался прокомментировать строку mpi.spawn.Rslaves() в коде R и изменил параметр mpiexec на «-np $ NSLOTS», но не дал никакой ошибки подчиненного процесса.

+0

-np останется 1. R должен получить количество слотов из файла хоста, которое передается ему автоматически, когда все работает правильно. – russellpierce

ответ

0

Вам необходимо сохранить mpi.spawn.Rslaves() в вашем R-скрипте, а затем запустить свой R-скрипт с помощью mpiexec/mpirun с помощью «-machinefile» и «-np 1» (http://linux.die.net/man/1/mpirun) или запустить ваши R-скрипты с помощью пакетный планировщик, такой как SGE, OpenLava и т. д.

В основном RMPI вызывает MPI API MPI_Comm_spawn() для создания рабочего узла. API MPI_Comm_spawn() получает размер и список машин из контекста MPI. Если сценарии RMPI выполняются без mpiexec/mpirun, то это режим Singleton MPI_INIT, который имеет максимальные нкеры хоста в контексте MPI. Если сценарии RMPI выполняются с помощью mpiexec/mpirun, контекст MPI будет подготовлен mpiexec/mpirun с машинным списком. В приведенном выше случае контекст MPI имеет машины и слоты, указанные в машинных файлах. «-Np 1» означает только создание одного экземпляра R-скрипта, который является мастером MPI.

Смежные вопросы