Ошибка 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.