我正在尝试使用mclapply()
并行处理一堆csv文件并在R中返回数据帧。我有一台64核机器,我现在似乎无法再使用mclapply()
获得1核。实际上,目前运行lapply()
而不是mclapply()
要快一些。这是一个示例,显示mclapply()没有使用更多可用的核心:
library(parallel)
test <- lapply(1:100,function(x) rnorm(10000))
system.time(x <- lapply(test,function(x) loess.smooth(x,x)))
system.time(x <- mclapply(test,function(x) loess.smooth(x,x), mc.cores=32))
user system elapsed
0.000 0.000 7.234
user system elapsed
0.000 0.000 8.612
是否有一些技巧让这个工作?我必须在这台机器上从源代码编译R(v3.0.1),是否有一些我错过了允许分叉的编译标志? detectCores()
告诉我,我确实有64个内核可以玩......
任何提示赞赏!
答案 0 :(得分:6)
我得到了类似的结果,但是如果我将rnorm(10000)
更改为rnorm(100000)
,我的速度会显着加快。我猜想额外的开销会消除这种小规模问题的任何性能优势。