Skip to content

Instantly share code, notes, and snippets.

@abikoushi
Last active March 3, 2023 04:49
Show Gist options
  • Save abikoushi/18ca9ee1f2fda072fe44a45da0dde799 to your computer and use it in GitHub Desktop.
Save abikoushi/18ca9ee1f2fda072fe44a45da0dde799 to your computer and use it in GitHub Desktop.
SHIROKANE のスパコン上で R の並列計算

パッケージのインストール

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 を数秒置きに実行するので、ちゃんと実行されたかモニタしたいときはそういうふうにする

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment