2015-12-13 41 views
0

我使用的是TORQUE/MOAB/RHEL 6.7的HPC。在PBS jobscript相關線是TORQUE下的makeMPIcluster:沒有足夠的插槽可用

#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 

以我ř程序我有:

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

我可以看到,MPI宇宙的大小是正確的(8在此示例中),但是該程序錯誤消息「沒有足夠的插槽可用」失敗。然而,它工作得很好,如果我問一個工人少:

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

但現在我只有7名工人(我已經測試過),所以處理器內核中的一個在任何生產不從事...

R CMD config CC 

只給我mpicc,在配置的其餘部分我找不到任何相關的東西。

任何想法如何使用所有分配的cpus?我是mpirun和所有那些的初學者......我在不同的服務器上使用w/o調度程序時工作。我也可以使用pbdMPI包中的所有分配的cpus。

+0

一個猜測,'-np的mpirun在1'遠程的推出1個處理器節點運行R腳本並使用1個內核,然後在R內核中再次創建8個內核。所以,沒有足夠的內核。 – Patric

+0

謝謝,我也想到了這些方面的內容。但是在'makeMPIcluster'中添加'includemaster = TRUE'似乎沒有任何改變。我也無法找到該選項的任何文檔,或更詳細的信息將如何建立MPI集羣。 –

+1

你可以嘗試只發射rsbs由pbs沒有mpirun或不綁定到核心我猜? – Patric

回答

0

所以,「官方」的答案。在jobscript沒有的mpirun

  1. 調用R:現在我已經測試的代碼多次和它的作品。
  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)