【问题标题】:Why doesn't the plyr package use my parallel backend?为什么 plyr 包不使用我的并行后端?
【发布时间】:2013-03-26 16:46:40
【问题描述】:

我正在尝试使用 R 中的 parallel 包进行并行操作,而不是 doSNOW,因为它是内置的,并且表面上是 R 项目想要的方式。我做错了,但我无法确定。以这个为例:

a <- rnorm(50)
b <- rnorm(50)

arr <- matrix(cbind(a,b),nrow=50)

aaply(arr,.margin=1,function(x){x[1]+x[2]},.parallel=F)

这工作得很好,产生了我的两列的总和。但是如果我尝试引入并行包:

library(parallel)
nodes <- detectCores()
cl <- makeCluster(nodes)
setDefaultCluster(cl)

aaply(arr,.margin=1,function(x){x[1]+x[2]},.parallel=T)

它会抛出错误

2: In setup_parallel() : No parallel backend registered
3: executing %dopar% sequentially: no parallel backend registered 

我是不是初始化后端错了?

【问题讨论】:

  • 对于任何看到这篇文章的人来说,我早就放弃了并行,转而支持 doParallel,这似乎只是工作。

标签: r parallel-processing plyr


【解决方案1】:

试试这个设置:

library(doParallel)
library(plyr)

nodes <- detectCores()
cl <- makeCluster(nodes)
registerDoParallel(cl)

aaply(ozone, 1, mean,.parallel=TRUE)

stopCluster(cl)

由于我从未将plyr 用于并行计算,我不知道为什么会发出警告。结果还是正确的。

【讨论】:

    【解决方案2】:

    aaply 状态的文档

    .parallel:如果为“TRUE”,则并行应用函数,使用并行 foreach 提供的后端

    所以大概你需要使用foreach 包而不是parallel 包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-14
      • 2021-12-24
      • 2012-07-17
      • 1970-01-01
      • 2013-09-29
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多