关于 doParallel 函数,R 中的 doMCforeach 之间有什么区别? doParallel 支持 windows,unix-like,而 doMC 只支持 unix-like。换句话说,为什么 doParallel 不能直接替换 doMC?谢谢你。

更新:doParallel 建立在 parallel 之上,它本质上是 multicoresnow 的合并,并自动使用适合您系统的工具。因此,我们可以使用 doParallel 来支持多系统。换句话说,我们可以使用 doParallel 替换 doMC

引用:http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf

顺便说一句,registerDoParallel(ncores=3)registerDoParallel(ncores=3) 有什么区别?

cl <- makeCluster(3)
registerDoParallel(cl)

似乎 stopCluster(cl) 可以自动停止集群,而第二个不会自动停止,需要 0x251812231343141 。

引用:http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf

最佳答案

doParallel 包是 doSNOWdoMC 的合并,就像 parallelsnow 和 0x251813123131313131313 的合并。但是,尽管multicoredoParallel所有功能,我被革命Analytics(分析)的丰富卡勒威游乐告诉记者,他们希望保持doMC周围,因为它是在某些情况下更有效,即使doMC现在使用doMC就像parallel。我没有亲自运行任何基准测试来确定是否以及何时存在显着差异。

我倾向于在 Linux 或 Mac OS X 计算机上使用 doParallel,在 Windows 计算机上使用 doMC,在 Linux 集群上使用 doParallel,但 doMPI 的所有平台都可以使用。

至于不同的注册方式,如果执行:

registerDoParallel(cores=3)

在 Windows 机器上,它将隐式创建一个集群对象,供以后使用 doParallel ,而在 Linux 和 Mac OS X 上,没有创建或使用集群对象。内核数被简单地记住,并在稍后调用 clusterApplyLB 时用作 mc.cores 参数的值。

如果执行:
cl <- makeCluster(3)
registerDoParallel(cl)

那么无论平台如何,注册的集群对象都将与 mclapply 一起使用。您是正确的,在这种情况下,您有责任在创建集群对象后关闭它,而隐式集群对象会自动关闭。

关于r - R中doMC和doParallel的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28989855/

10-16 23:53