8

Rのパッケージは組み込みであり、表面上はRプロジェクトが望んでいる方法であるためでparallelはなく、並列操作に使用しようとしています。doSNOW私はピン留めできない何か間違ったことをしています。これを例にとってみましょう:

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)

これは問題なく機能し、2つの列の合計を生成します。しかし、並列パッケージを持ち込もうとすると、次のようになります。

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:'TRUE'の場合、foreachが提供する並列バックエンドを使用して、関数を並列に適用します

foreachしたがって、おそらくパッケージではなくパッケージを使用する必要がありparallelます。

于 2013-03-26T17:04:24.560 に答える