多层与plyr,MC

Ale*_*lex 6 parallel-processing r mc plyr

嗨,我想在包中使用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 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jos*_*ich 10

mean相对于将拆分部分分配到每个核心并检索结果所需的通信成本,该功能运行得太快.

这是人们在分布式计算中遇到的常见"问题".他们希望它能让一切运行得更快,因为他们忘记了成本(节点之间的通信)以及好处(使用多个核心).

特定于plyr中并行处理的东西:只有函数在多个核上运行.拆分和组合仍然在单个核心上完成,因此当您并行使用plyr函数时,您正在应用的函数必须非常计算密集才能看到好处.