Pas*_*ten 6 parallel-processing r cran
我正在为R构建一个包,我希望能够跨平台.我正在Linux下开发,该函数mclapply将从parallel包中使用.Windows(使用doParallel)不支持此程序包.我真的很喜欢这个parallel软件包,因为它的简单性和速度,我不知道这是否应该是为CRAN提供2个不同版本的软件包的原因,对于单独的操作系统(似乎需要额外的维护工作),而不是提到它是否被允许.
思考?
而且,现在我对parallel的是
mclapply(ldata, function(x), mc.cores=cores)
Run Code Online (Sandbox Code Playgroud)
相当于doParallel's
cl <- makeCluster(cores)
parLapply(cl, ldata, function(x))
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
Ste*_*ton 12
首先,无论是mclapply和parLapply是在parallel包装,但mclapply实际上并不在并行运行在Windows上. parLapply在所有支持的平台上并行运行,但并不总是如此高效mclapply.该doParallel包与foreach包一起使用,并充当包的适配器parallel.
要编写适用于Windows和非Windows的软件包,您有多种合理的选择:
parLapply因为它无处不在parLapplyWindows和mclapply其他地方doParallel与foreach该doParallel软件包很方便,因为它可以mclapply在非Windows平台上使用.例如:
library(doParallel)
registerDoParallel()
foreach(i=1:10, .options.snow=list(preschedule=TRUE)) %dopar% {
Sys.sleep(2)
}
Run Code Online (Sandbox Code Playgroud)
这适用mclapply于Linux和Mac OS X,但会在Windows后面的幕后自动创建PSOCK群集对象.使用preschedule=TRUE(在doParallel1.0.3中添加)将导致doParallel在内部使用预先安排任务clusterApply,就像parLapply.
请注意,如果你明确地创建并注册群集对象,然后mclapply将不被使用,无论平台.它会工作正常,但可能效率不高.要使用mclapply,您必须registerDoParallel使用数字参数调用,或者根本不调用任何参数.
您可以查看boot软件包的源代码,以获取如何使用mclapply或parLapply依赖于您的平台的示例.
| 归档时间: |
|
| 查看次数: |
1679 次 |
| 最近记录: |