Я запускаю симуляцию на R и кластере компьютеров и имею следующую проблему. На каждом из компьютеров X я запускаю:
fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)
Есть 32 компьютера, каждый с 16 ядрами. Тем не менее, около 2% случайных чисел идентичны. Какие стратегии вы бы приняли, чтобы избежать этого?
Мне удалось избежать этой проблемы для fxT2, установив задержку (т.е. задержка на секунду времени, в течение которого каждое задание отправляется на каждый из компьютеров X). Но это похоже на ad-hoc для fxt2.
Проблема в том, что в действительности fxT2 - это длинная задача, включающая псевдослучайные числа. В конце процесса я ожидаю получить X * nessay воспроизводство того же статистического эксперимента, а не nessay воспроизведение. Как убедиться, что это действительно так, и есть ли способ проверить это?
Ответы:
Снег имеет явную поддержку инициализации заданного числа ГСЧА потоков в вычислительном кластере.
Он может использовать одну из двух реализаций RNG:
rsprng и
rlecuyer
В противном случае вы должны выполнить координацию вручную.
источник
Вам необходимо использовать RNG, специально разработанный для параллельных вычислений. См. Раздел «Параллельные вычисления: случайные числа» в представлении « Высокопроизводительные вычисления» .
источник