Rで並列計算を頻繁に行うのですが、その度に「あれ、どうやるんだっけ」となるので、備忘録として方法を記しておきます。
いくつか並列計算の方法があるようですが、自分はdoParallel
パッケージのforeach
で実行しています。
コード
library(doParallel)
# 1
cores <- 10 # No. of cores to be used
# 2
cl <- makeCluster(cores)
registerDoParallel(cl)
# 3
result <- foreach(i = 1:100) %dopar% {
# calculation
}
# 4
stopCluster(cl)
コードの内容
- 並列計算の数(使用するコア数)を決める
- 1で定めた数のスレッドを確保する
-
foreach
内で定めた範囲(上の例だと i = 1 ~ 100)で、%dopar%
以降の中身を並列・繰り返し計算し、その結果をresult
に入れる - 並列化を終了し、コアを開放する
result
はlist形式のオブジェクトとして作られる。要素数は総計算数(上の例だと100)であり、各要素に各計算結果が収まっている。