Rも並列化で高速化することが可能らしい。使うパッケージとしてはRmpi、snow、pforeachがある。pforeachが一番後発なので多分使いやすいのだろう?
- Rmpi
- snow
- pforeach
2019/02/18 追記
parallel, foreach, dosnow, doparallel, snowfall, domc, furrr, future, future.batchtools, dompi など山ほど出てくる。
foreachパッケージをdoMCやdoSNOWパッケージと組み合わせて使うのが便利そうである。どちらを使うかであるが、foreach-based Parallelismを見ると
4.2. doMC: shared-memory parallelism 4.3. doSNOW: distributed-memory parallelism
とのことであり、doMCはそもそもWindows用のバイナリを配布していない。ということで、他の人に使ってもらうときはdoSNOW、自分で使うときは基本的にdoMC、クラスタを使うときはdoSNOWということにしておく。%dopar%
でだめなら%do%
にすれば並列化をoffにできる。
# doMC + foreach library(foreach) library(doMC) registerDoMC(cores=as.integer(system("nproc", intern=TRUE)) - 1) result <- foreach(i=1:10, .combine=c, .export=ls(envir=parent.frame())) %dopar% { myProc() } result
# doSNOW + foreach library(foreach) library(doSNOW, quietly=TRUE) library(parallel) # detectCores cluster <- makeCluster(detectCores(), type="SOCK") # cluster <- makeCluster(detectCores() - 1, type="MPI") registerDoSNOW(cluster) result <- foreach(i=1:10, .combine=c, .export=ls(envir=parent.frame())) %dopar% { myProc() } result stopCluster(cluster)
2019/02/19 追記
GPUも使ってみたい。R Language - GPU加速コンピューティング | r Tutorialを見るにnvidia製gpuならgputools、それ以外ならgpurを使うしかなさそう。openclパッケージはOpenCLをベタ書きするのでもはやRではない。