2

R での並列プログラミングに doSMP パッケージを使用しようとしています。これは、各 MC レプリケートが同じシードから開始するかどうか、および RNG が同じ数を与えるかどうかをテストするために書いたコードのスニペットです。乱数は同じになります。各 MC レプリケートをランダムにしたい (run.MC.replicate で乱数を生成する)。どうすればこれを修正できますか?

par.mc.result<- foreach(mc =1:nmc,.packages=c("MASS") ) %dopar% {

    source("./src/simulation_math_util_fn.R")

    source("./src/oosMDS.R")
    source("./src/smacofM.R")
    source("./src/oosIM.R")
    sink(file=paste("debug",mc,collapse=""))
    print(runif(1))
            run.MC.replicate(myParams)

    }

この動作は、doSMP が子 R プロセスを生成する方法が原因で発生すると推測しています。助けてください

4

1 に答える 1

3

並列計算に適した RNG が必要です。ハイ パフォーマンス コンピューティング タスク ビューに移動し、 「並列計算: 乱数」セクションを参照してください。rsprngおよびrlecuyerパッケージが一覧表示されます。

于 2011-05-06T22:24:03.110 に答える