RNG、R、mclapply 和计算机集群

机器算法验证 r 随机生成 并行计算 多核
2022-02-28 17:59:58

我正在 R 和一组计算机上运行模拟,并遇到以下问题。在我运行的每台 X 计算机上:

fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)

有 32 台计算机,每台计算机有 16 个内核。然而,大约 2% 的随机数是相同的。你会采取什么策略来避免这种情况?

我已经能够通过设置延迟(即将每个作业发送到每台 X 计算机的时间延迟一秒)来避免 fxT2 的这个问题。但它似乎对 fxt2 非常特别。

问题在于,实际上 fxT2 是一项涉及伪随机数的长期任务。在该过程结束时,我希望获得相同统计实验的 X*nessay 再现,而不是nessay 再现。如何确保确实如此,有没有办法检查?

2个回答

Snow明确支持在集群计算中初始化给定数量的 RNG 流

它可以采用两种 RNG 实现之一:

否则,您必须手动进行协调。

您需要使用专门为并行计算设计的 RNG。请参阅高性能计算任务视图的“并行计算:随机数”部分