使用 type = MPI 的 "doParallel" 包和直接使用 doMPI 有什么区别?
What's the difference between using the "doParallel" package with type = MPI and using doMPI directly?
使用 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})
"doParallel" 包作为 "clusterApplyLB" 函数的包装器,在使用 MPI 集群时通过调用 "Rmpi" 包中的函数来实现。
"doMPI" 包直接使用 "Rmpi" 函数,并包含一些 "clusterApplyLB" 中不可用的功能:
支持动态获取输入和合并输出,以高效处理大量循环迭代;
支持MPI广播初始化worker;
允许通过 mpirun 或 MPI spawn 函数启动 worker。
使用 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})
"doParallel" 包作为 "clusterApplyLB" 函数的包装器,在使用 MPI 集群时通过调用 "Rmpi" 包中的函数来实现。
"doMPI" 包直接使用 "Rmpi" 函数,并包含一些 "clusterApplyLB" 中不可用的功能:
支持动态获取输入和合并输出,以高效处理大量循环迭代;
支持MPI广播初始化worker;
允许通过 mpirun 或 MPI spawn 函数启动 worker。