2015-12-13 4 views
0

Я использую HPC с TORQUE/MOAB/RHEL 6.7. Соответствующие строки в jobscript PBS являютсяmakeMPIcluster под TORQUE: Недостаточно доступных слотов

#PBS -l nodes=1:ppn=8,mem=12gb 
module load r_3.2.0 
module load icc_14.0.3-ompi_1.8.3 
mpirun -np 1\ 
    --mca mtl mx --mca pml cm --bind-to core --map-by core\ 
    Rscript >>dice.txt 2>&1 diceEstimate4i_parallel.R 

В моей R программе у меня есть:

library(Rmpi) 
library(snow) 
cl <- makeMPIcluster(mpi.universe.size()) 

Я могу видеть, что размер Вселенной MPI является правильным (8 в этом примере), но программа с сообщением об ошибке «Недостаточно доступных слотов». Тем не менее, он хорошо работает, если я прошу одного меньше рабочих:

cl <- makeMPIcluster(mpi.universe.size() - 1) 

Но теперь у меня есть только 7 рабочих (Я испытал это), так что один из ядер процессора не занимаются ничем производительным ...

R CMD config CC 

дает мне всего mpicc, я не могу найти что-либо релевантное в остальной части конфигурации.

Любые идеи, как я могу использовать все выделенные процессоры? Я начинаю с mpirun и все такое ... Я работаю, когда на другом сервере без планировщика. Я также смог использовать все выделенные процессоры с пакетом pbdMPI.

+0

Одно предположение, 'mpirun -np 1' запущен 1 процессор в удаленного вызова узел для запуска R-скрипта, и он задействовал 1 ядро, а затем в R-core вы снова создаете 8. Таким образом, не хватает ядер. – Patric

+0

Спасибо, я тоже что-то думал об этом. Но добавление 'includemaster = TRUE' в' makeMPIcluster', похоже, ничего не меняло. Я также не смог найти какую-либо документацию для этой опции или более подробную информацию о том, как будет настроен кластер MPI. –

+1

Вы могли бы попробовать только запустить rscript pbs без mpirun или не привязываться к ядру? – Patric

ответ

0

Итак, «официальный» ответ. Теперь я тестировал код много раз, и она работает:

  1. Invoke R в jobscript без mpirun.
  2. Определите размер кластера и создайте MPICluster.

jobscript может выглядеть примерно так:

module load r_3.2.0 
module load icc_14.0.3-ompi_1.8.3 
Rscript program.R 

и код R создать кластер:

nodefile <- Sys.getenv("PBS_NODEFILE") 
nodes <- readLines(nodefile) 
cl <- makeMPIcluster(length(nodes), includemaster=TRUE) 

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

  • Нет связанных вопросов^_^