51

关于功能,RdoParallel和R有什么区别?支持windows,类unix,而仅支持类unix。换句话说,为什么不能直接替换?谢谢你。doMCforeachdoParalleldoMCdoParalleldoMC

更新: doParallel基于parallel,本质上是合并multicoresnow自动为您的系统使用适当的工具。这样一来,我们就可以使用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

4

1 回答 1

32

doParallel包是 and 的合并doSNOW,就像doMCand的parallel合并一样。但是,尽管具有. _ _ 我没有亲自运行任何基准来确定是否以及何时存在显着差异。snowmulticoredoParalleldoMCdoMCdoMCparalleldoParallel

我倾向于doMC在 Linux 或 Mac OS X 计算机、doParallelWindows 计算机和doMPILinux 集群上使用,但doParallel在所有这些平台上都可以使用。


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

registerDoParallel(cores=3)

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

如果你执行:

cl <- makeCluster(3)
registerDoParallel(cl)

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

于 2015-03-12T02:45:47.110 回答