2

この投稿 hereに基づいて、スクリプトを作成しようとしました。

library(parallel)
library(doParallel)

cl<-makeCluster(2,outfile='')
registerDoParallel(cl)

foreach(i=1:5, .packages='parallel') %dopar% {
    system.time(mclapply(1:10, function(x){rnorm(1e5)},mc.cores=2))
}

stopCluster(cl)

最初は機能しましたが、現在エラーコードがスローされています。

Error in unserialize(node$con) : error reading from connection
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -> unserialize
Execution halted
Error in unserialize(socklist[[n]]) : error reading from connection
Error in unserialize(node$con) : error reading from connection
Calls: <Anonymous> ... doTryCatch -> recvData -> recvData.SOCKnode -> unserialize
Execution halted

何が起こっているのか分かりますか?mclapply を foreach ループに入れることさえできますか?

編集:これはクラスターではなく、単一の8コアマシン上にあるとも言いたいです。

4

2 に答える 2

0

並列計算に mclapply を使用すると、同様のエラーが発生しました。非常にランダムな方法で時々発生します。他の回答からの提案に従うことができますが、私が行った簡単な修正の1つは、アルゴリズムがこのエラーをキャッチしてコマンドを再実行することです。ほとんどの場合、再実行すると機能します。

于 2021-08-02T18:10:12.037 に答える