2

使用 type = MPI 的“doParallel”包和直接使用 doMPI 有什么区别?

library(foreach)
library(doParallel)
cl <- makeCluster(mpi.universe.size(), type='MPI')
registerDoParallel(cl)
system.time(foreach(i = 1:3) %dopar% {Sys.sleep(i); i})

VS

library(doMPI)
cl <- startMPIcluster(count=2)
registerDoMPI(cl)
system.time(foreach(i = 1:3) %dopar% {Sys.sleep(i); i})
4

1 回答 1

2

“doParallel”包充当“clusterApplyLB”函数的包装器,该函数通过在使用 MPI 集群时调用“Rmpi”包中的函数来实现。

“doMPI”包直接使用“Rmpi”函数,并包含一些“clusterApplyLB”中没有的特性:

  • 支持即时获取输入和组合输出,以有效处理大量循环迭代;

  • 支持MPI广播初始化worker;

  • 允许通过 mpirun 或 MPI spawn 函数启动工作程序。

于 2018-05-11T18:05:08.400 回答