我在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复制。如何确保确实如此,是否有办法检查?
好问题。有一个在这个问题上的随机数和多核包
—
csgillespie
@CSgillepsie:>感谢您的指针,但是我不确定这是同一个问题:按照我理解您所指出的问题的方式,所有过程都是由mclapply产生的。这里有所不同:在每台计算机上,所有进程都是由mclapply生成的,但是跨计算机的情况并非如此。
—
user603 2011年