R中doMC和doParallel的区别
the difference between doMC and doParallel in R
R 中 doParallel
和 doMC
关于 foreach
函数有什么区别? 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
doParallel
包是 doSNOW
和 doMC
的合并,就像 parallel
是 snow
和 multicore
的合并一样.但是,尽管 doParallel
具有 doMC
的所有功能,Revolution Analytics 的 Rich Calaway 告诉我他们希望保留 doMC
因为它在某些情况下效率更高,即使 doMC
现在使用 parallel
就像 doParallel
。我个人 运行 没有任何基准来确定是否以及何时存在显着差异。
我倾向于在 Linux 或 Mac OS X 计算机上使用 doMC
,在 Windows 计算机上使用 doParallel
,并且doMPI
在 Linux 集群上,但 doParallel
确实适用于所有这些平台。
关于不同的注册方式,如果执行:
registerDoParallel(cores=3)
在 Windows 机器上,它将隐式创建一个集群对象供以后与 clusterApplyLB
一起使用,而在 Linux 和 Mac OS X , 没有创建或使用集群对象。内核的数量被简单地记住并在稍后调用 mclapply
.
时用作 mc.cores
参数的值
如果你执行:
cl <- makeCluster(3)
registerDoParallel(cl)
那么注册的集群对象将与clusterApplyLB
一起使用,与平台无关。您是正确的,在这种情况下,您有责任在创建集群对象后将其关闭,而隐式集群对象会自动关闭。
R 中 doParallel
和 doMC
关于 foreach
函数有什么区别? 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
doParallel
包是 doSNOW
和 doMC
的合并,就像 parallel
是 snow
和 multicore
的合并一样.但是,尽管 doParallel
具有 doMC
的所有功能,Revolution Analytics 的 Rich Calaway 告诉我他们希望保留 doMC
因为它在某些情况下效率更高,即使 doMC
现在使用 parallel
就像 doParallel
。我个人 运行 没有任何基准来确定是否以及何时存在显着差异。
我倾向于在 Linux 或 Mac OS X 计算机上使用 doMC
,在 Windows 计算机上使用 doParallel
,并且doMPI
在 Linux 集群上,但 doParallel
确实适用于所有这些平台。
关于不同的注册方式,如果执行:
registerDoParallel(cores=3)
在 Windows 机器上,它将隐式创建一个集群对象供以后与 clusterApplyLB
一起使用,而在 Linux 和 Mac OS X , 没有创建或使用集群对象。内核的数量被简单地记住并在稍后调用 mclapply
.
mc.cores
参数的值
如果你执行:
cl <- makeCluster(3)
registerDoParallel(cl)
那么注册的集群对象将与clusterApplyLB
一起使用,与平台无关。您是正确的,在这种情况下,您有责任在创建集群对象后将其关闭,而隐式集群对象会自动关闭。