8

我正在尝试将parallelR 中的包用于并行操作,而不是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 

我初始化后端错误吗?

4

2 回答 2

23

试试这个设置:

library(doParallel)
library(plyr)

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

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

stopCluster(cl)

由于我从未使用plyr过并行计算,我不知道为什么会发出警告。结果无论如何都是正确的。

于 2013-03-26T17:11:41.987 回答
-2

aaply各州的文件

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

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

于 2013-03-26T17:04:24.560 回答