嗨,我正在尝试将R的ddply库中的plyrMC包一起使用。它似乎并没有加快计算速度。这是我运行的代码:

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/

10-12 17:47