关于foreach函数,doParallel和R中的doMC有什么不同?doParallel支持windows,类unix,而doMC只支持类unix。换句话说,为什么doParallel不能直接取代doMC呢?谢谢。
更新:doParallel构建在parallel之上,它本质上是multicore和snow的合并,并自动为您的系统使用适当的工具。因此,我们可以使用doParallel来支持多系统。换句话说,我们可以使用doParallel来取代doMC。
参考:http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf
顺便说一句,registerDoParallel(ncores=3)和
cl <- makeCluster(3)
registerDoParallel(cl)看起来registerDoParallel(ncores=3)可以自动停止集群,而第二个不会自动停止,需要stopCluster(cl)。
参考:http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf
发布于 2015-03-12 10:45:47
doParallel包是doSNOW和doMC的合并,就像parallel是snow和multicore的合并一样。但是,尽管doParallel拥有doMC的所有功能,但革命分析公司的Rich Calaway告诉我,他们希望保留doMC,因为在某些情况下它更高效,即使doMC现在像doParallel一样使用parallel。我个人没有运行任何基准测试来确定是否以及何时存在显着差异。
我倾向于在Linux或Mac计算机上使用doMC,在Windows计算机上使用doParallel,在Linux集群上使用doMPI,但是doParallel确实可以在所有这些平台上运行。
对于不同的注册方法,如果您执行:
registerDoParallel(cores=3)在Windows机上,它将隐式创建集群对象以供以后与clusterApplyLB一起使用,而在Linux和Mac上,不会创建或使用集群对象。内核数只需记住,并在稍后调用mclapply时用作mc.cores参数的值。
如果执行以下命令:
cl <- makeCluster(3)
registerDoParallel(cl)然后,注册的集群对象将与clusterApplyLB一起使用,而与平台无关。您是正确的,在这种情况下,您有责任在创建集群对象后将其关闭,而隐式集群对象将自动关闭。
https://stackoverflow.com/questions/28989855
复制相似问题