2011-07-15 20 views
1

doMCとマルチコアに基づくR(netresponse)パッケージに並列計算オプションを追加しようとしています。スクリプトは正常に動作しますが、2回目の試行でのみ動作します。foreachパッケージ内関数:最初の呼び出しでは機能しません

バグを再現するには、Rを起動して以下のスクリプトを実行してください。最後の行にはまってしまいます。 ctrl-cで中断した後、「select:Interrupted system call」というメッセージが表示されます。次に、同じスクリプトを再度実行すると、問題なく期待どおりの結果が得られます。

初回実行時にこの作業を適切に行うには、さらに初期化が必要ですか?または他のヒント?ご支援のための

おかげで、 - L


require(netresponse) 
require(multicore) 
require(doMC) 
registerDoMC(3) 
print(getDoParWorkers()) 
res <- foreach(i = 1:100, .combine = cbind, 
     .packages = "netresponse") %dopar% netresponse::vdp.mixt(matrix(rnorm(1000), 100, 10)) 

答えて

1

パッケージnetresponseのためのヘルプページからの依存関係の相続人のリストは、 "依存:メソッド、IGRAPH、グラフ、MINET"。私はあなたが.packages引数に "netresponse"をリストするだけで、それらのすべてを労働者に渡すことはないと思う。 foreach%のdoparの%での問題のため

+0

右。しかし、これでは問題は解決しません。私はnetresponseのバージョン1.5.13を使用していますが、これは以下の依存関係を持ちますが、以前のバージョンでも同じ問題が発生します。以下のように依存関係を追加しました。require(c( "netresponse"、 "doMC"、 "multicore"、 "graph"、 "minet"、 "methods"、 "qvalue"、 "compiler") ); registerDoMC(3); ( "netresponse"、 "メソッド"、 "igraph"、 "グラフ"、 "minet"、 "qvalue"、 "compiler"、 "マルチコア "、" doMC "))%dopar%netresponse :: vdp.mixt(行列(rnorm(1000)、100,10)) – antagomir

0

クイックフィックスはこれらのパッケージを再インストールすることです:

install.packages("doSNOW") 

install.packages("doParallel") 

install.packages("doMPI") 

のStackOverflowでさまざまなスレッドで述べたように、これらは、これらの古いバージョンに存在していたR.バグで並列処理を担当していますパッケージが削除されました。私はあなたのプロジェクト/パッケージでこれらのパッケージを使用していなくても、おそらく役立つでしょう。

関連する問題