Open MPI の環境変数を設定
/
以下はバージョンなので適宜変える
module load openmpi/4.0.5
R
とタイプしてRを起動
foreach
, doParallel
, snow
, Rmpi
パッケージをインストール
install.packages("snow")
install.packages("Rmpi")
install.packages("foreach")
install.packages("doParallel")
実行したい R のコードを書く
次は一例
library(foreach)
library(doParallel)
library(snow)
library(Rmpi)
cl <- makeCluster(10, type='MPI')
registerDoParallel(cl)
res <- foreach(i=1:10) %dopar% {
mean(dpois(1,rgamma(5000,1)))
}
saveRDS(res, file = "res_mpi_test.rds")
proc.time()
ジョブスクリプトを作る
次のスクリプトを mpi_test.sh
という名前で保存
#!/bin/bash
#$ -S /bin/bash
#$ -cwd
module load R/3.5.0 openmpi/4.0.5
Rscript mpi_test.R
qsub mpi_tst.sh
で実行
qsub mpi_test.sh
要求ハードリソース
memory (s_vmem): 2.1G = ジョブは 1 スロットあたり 2.1G バイトのメモリを要求します
slots (mpi-fillup): 10 = ジョブは 1000% の CPU を要求します
total memory: 21G = ジョブは 21G バイトのメモリを要求します
Your job xxxxxx ("mpi_test.sh") has been submitted
xxxxxxのところはジョブID
qstat
で実行中のジョブ一覧が見れる
watch qstat
とすると qstat
を数秒置きに実行するので、ちゃんと実行されたかモニタしたいときはそういうふうにする