mclapply没有使用多核

时间:2013-08-27 22:18:35

标签: r

我正在尝试使用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个内核可以玩......  任何提示赞赏!

1 个答案:

答案 0 :(得分:6)

我得到了类似的结果,但是如果我将rnorm(10000)更改为rnorm(100000),我的速度会显着加快。我猜想额外的开销会消除这种小规模问题的任何性能优势。