使用类型= 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})
与
library(doMPI)
cl <- startMPIcluster(count=2)
registerDoMPI(cl)
system.time(foreach(i = 1:3) %dopar% {Sys.sleep(i); i})
"doParallel"包充当"clusterApplyLB"函数的包装器,该函数通过使用MPI集群时调用"Rmpi"包中的函数来实现。
">doMPI"软件包直接使用"Rmpi"函数,并包含一些"clusterApplyLB"中不可用的功能:
支持即时获取输入和组合输出,高效处理大量循环迭代;
支持 MPI 广播以初始化工作线程;
允许通过 mpirun 或 MPI 生成函数启动工作线程。