Ошибка doMPI: в системе недостаточно доступных слотов, чтобы удовлетворить 2 слота, запрошенных приложением

Я пытаюсь запустить пакет doMPI на моем локальном компьютере, чтобы я мог выполнить его тестирование, прежде чем отправлять задания в кластер. Я использую Mac OSX Yosemite и установил открытый mpi 2.0.2 через brew.

mpirun -V

mpirun (открытый MPI) 2.0.2

Сообщайте об ошибках на http://www.open-mpi.org/community/help/

Я прочитал введение для doMPI, и я пытаюсь выполнить пример в демо

mpirun -H localhost R --slave -f sincMPI.R

К сожалению, я продолжаю получать следующую ошибку. Я погуглил, но не могу понять, что может быть не так.

> Loading required package: foreach Loading required package: iterators
> Loading required package: Rmpi
> --------------------------------------------------------------------------
> There are not enough slots available in the system to satisfy the 2
> slots that were requested by the application:  
> /Library/Frameworks/R.framework/Resources/bin/Rscript
> 
> Either request fewer slots for your application, or make more slots
> available for use.
> --------------------------------------------------------------------------
> Error in mpi.comm.spawn(slave = rscript, slavearg = args, nslaves =
> count,  :    MPI_ERR_SPAWN: could not spawn processes Calls:
> startMPIcluster -> mpi.comm.spawn -> .Call Execution halted
> ------------------------------------------------------- 
> Primary job  terminated normally, but 1 process returned a non-zero exit code.. 
>Per user-direction, the job has been aborted.
> -------------------------------------------------------
> --------------------------------------------------------------------------
> mpirun detected that one or more processes exited with non-zero
> status, thus causing the job to be terminated. The first process to do
> so was:
> 
>   Process name: [[27630,1],0]   Exit code:    1

РЕДАКТИРОВАНИЕ: Результаты теста на основе ответа ниже

Работал как указано:

mpirun -H localhost,localhost,localhost R --slave -f sincMPI.R

Я взял count=2 из startMPIcluster(), и это также сработало.

startMPIcluster() #in sincMPI.R 
mpirun -H localhost,localhost,localhost R --slave -f sincMPI.R

Если вы уберете count=2, вы можете изменить количество хостов в mpi run. Здесь я указываю четыре хоста.

startMPIcluster() #in sincMPI.R 
mpirun -H localhost,localhost,localhost,localhost R --slave -f sincMPI.R

Вы даже можете использовать этот метод, чтобы указать больше, чем количество доступных ядер. У меня 8 (логических) ядер, но я могу указать 9 хостов, и он работает.

mpirun -H localhost,localhost,localhost,localhost,localhost,localhost,localhost,localhost,localhost R --slave -f sincMPI.R

Однако вы не можете поместить count=9 в startMPIcluster()

startMPIcluster(count=9)  
Error in startMPIcluster(count = 9) :    
  count must be either unspecified, or set to 8 
Execution halted

Итак, возможно, лучший подход для тестирования mpi на Mac - не устанавливать счетчик в startMPIcluster и использовать -H для управления количеством задач?

1 ответ

Решение

Используя mpirun -H localhost опция, размер вселенной MPI только один, и это вызывает mpi.comm.spawn потерпеть неудачу, когда пример вызывает startMPIcluster, Если вы используете -H localhost,localhost,localhostразмер вселенной будет три, и пример должен работать.


Обновить

Обратите внимание, что я звоню только startMPIcluster с аргументом count при интерактивном выполнении на одном компьютере (то есть, когда я не использую mpirun). При выполнении сценария doMPI с помощью mpirun мне легче контролировать количество рабочих с помощью mpirun.

Другие вопросы по тегам