嗨,我正在尝试将R的ddply
库中的plyr
与MC
包一起使用。它似乎并没有加快计算速度。这是我运行的代码:
require(doMC)
registerDoMC(4)
getDoParWorkers()
##> 4
test <- data.frame(x=1:10000, y=rep(c(1:20), 500))
system.time(ddply(test, "y", mean))
# user system elapsed
# 0.015 0.000 0.015
system.time(ddply(test, "y", mean, .parallel=TRUE))
# user system elapsed
# 223.062 2.825 1.093
有任何想法吗?
最佳答案
相对于将拆分部分分配到每个核心并获取结果所需的通信成本,mean
函数的运行速度过快。
这是分布式计算中经常遇到的“问题”。他们希望这样做会使一切运行得更快,因为他们忘记了成本(节点之间的通信)和 yield (使用多个内核)。
plyr中的并行处理特有的东西:只有函数在多个内核上运行。拆分和合并仍然在单个内核上完成,因此要并行使用plyr函数,您要应用的函数将需要大量的计算工作才能看到好处。
关于r - 带plyr的多核,MC,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9808495/