いくつかのタスクを並行して実行するために複数のforeachワーカーが関わるRコードがあります。私はこの目的のためにforeachとdoMCを使用しています。私は各foreachワーカーに新しいワーカーを募集し、コードの一部を並列化可能なものに配布するようにしたい。私はdoSNOWとdoMC here (https://www.rmetrics.org/files/Meielisalp2009/Presentations/Lewis.pdf#page=17)を用いたマルチパラダイム並列処理の例を見てforeachワーカーがサブタスクを他のワーカーに登録して配布することを許可する
require(doMC)
require(foreach)
registerDoMC(cores = 8)
foreach (i = (1:8)) %dopar% {
<<some code here>>
foreach (j = (1:4)) %dopar% {
<<some other code here>>
}
}
:私は次のようになり、理想的なコードを探しています
require(doMC)
require(foreach)
registerDoMC(cores = 8)
foreach (i = (1:8)) %dopar% {
<<some code here>>
for (j in c(1:4)) {
<<some other code here>>
}
}
:よう
現在のコードが見えます。しかし、私はそれが私が望むかどうかは分かりません。
また、Nested foreachは2つのループ(see here)をマージする必要があるため適用されませんが、私の場合はこれは好ましくありません。 2番目のループは、コードの一部について最初のループのみを助けます。私が間違っていれば私を修正してください。
ありがとうございました。
あなたが望むものではないかもしれませんが、ネストされた 'foreach'式を使うことができます:http://cran.r-project.org/web/packages/foreach/vignettes/nested.pdf。しかし、私はループ内でより多くの労働者を募集することについて知らない。 – ialm
ありがとうございます。しかし、ネストされたforeachは、2つのネストされたループをマージする必要があるため、私のケースには適用できませんが、コードの一部だけに呼び出される内部ループが必要です。これを反映するように質問を更新します。 – imriss