隨機數生成

並行化的一個主要問題是使用 RNG 作為種子。數字的隨機數通過會話開始或最近的 set.seed() 的操作次數進行迭代。由於並行過程來自同一個函式,它可以使用相同的種子,可能導致相同的結果! 呼叫將在不同核心上序列執行,沒有任何優勢。

必須生成一組種子並將其傳送到每個並行程序。這在一些軟體包(parallelsnow 等)中自動完成,但必須在其他軟體包中明確解決。

s <- seed
for (i in 1:numofcores) {
    s <- nextRNGStream(s)
    # send s to worker i as .Random.seed
}

種子也可以設定為再現性。

clusterSetRNGStream(cl = parallelcluster, iseed)