2016-12-02 69 views
0

我現在正在處理大型數據集,我想使用並行計算來加速該過程。 WestGird是一個加拿大計算系統,它具有互連的集羣。WestGrid中基於MPI羣集的並行計算(pbs文件)

我使用兩個包doSNOWparallel來做並行作業。我的問題是我應該如何編寫pbs文件。當我使用qsub提交作業時,發生錯誤:mpirun noticed that the job aborted, but has no info as to the process that caused that situation

這裏是R腳本代碼:

install.packages("fume_1.0.tar.gz") 
library(fume) 
library(foreach) 
library(doSNOW) 
load("spei03_df.rdata",.GlobalEnv) 

cl <- makeCluster(mpi.universe.size(), type='MPI') 
registerDoSNOW(cl) 
MK_grid <- 
    foreach(i=1:6000, .packages="fume",.combine='rbind') %dopar% { 
    abc <- mkTrend(as.matrix(spei03_data)[i,]) 
    data.frame(P_value=abc$`Corrected p.value`, Slope=abc$`Sen's Slope`*10,Zc=abc$Zc) 
    } 
    stopCluster(cl) 
    save(MK_grid,file="MK_grid.rdata") 
    mpi.exit() 

的 「煙」 包是從https://cran.r-project.org/src/contrib/Archive/fume/下載。

這裏是PBS文件:

#!/bin/bash 
#PBS -l nodes=2:ppn=12 
#PBS -l walltime=2:00:00 
module load application/R/3.3.1 
cd $PBS_O_WORKDIR 

export OMP_NUM_THREADS=1 
mpirun -np 1 -hostfile $PBS_NODEFILE R CMD BATCH Trend.R 

誰能幫助?非常感謝。

回答

1

很難就如何使用我從未使用過的計算集羣給出建議,因爲每個集羣都有不同的設置,但我可以給你一些一般性建議,可能有所幫助。

你的工作腳本對我來說看起來很合理。這與我在我們的Torque/Moab集羣上使用的非常相似。驗證您是否可以交互地加載所有必需的R軟件包是一個好主意,因爲有時可能需要加載額外的模塊文件。如果您需要自己安裝軟件包,請確保將它們安裝在名爲「〜/ R/x86_64-pc-linux-gnu-library/3.3」的標準「個人庫」中。這通常可以避免在並行執行時在R腳本中加載包的錯誤。

我有更多的讚美你 - [R腳本:

  • 你需要使用library(Rmpi)加載RMPI包在你的[R腳本。加載doSNOW時不會自動加載,因此在撥打mpi.universe.size()時會出現錯誤。

  • 我不建議在R腳本中安裝R包。例如,如果install.script需要提示您輸入CRAN存儲庫,那麼這將失敗,因爲您無法通過執行mpirun的R腳本執行交互功能。

  • 我建議開始mpi.universe.size() - 1集羣工時候打電話makeCluster。由於mpirun啓動一名工人,因此makeCluster可能不會安全地產生mpi.universe.size()個額外的工人,因爲這會導致總計爲mpi.universize.size() + 1的MPI過程。這適用於某些羣集,但它至少在我們的一個羣集上失敗。

  • 在調試時,嘗試使用makeCluster outfile=''選項。根據您的MPI安裝,這可能會讓您看到否則將隱藏的錯誤消息。