Estoy ejecutando una simulación en R y un grupo de computadoras y tengo el siguiente problema. En cada una de las X computadoras que ejecuto:
fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)
Hay 32 computadoras, cada una con 16 núcleos. Sin embargo, alrededor del 2% de los números aleatorios son idénticos. ¿Qué estrategias adoptarías para evitar esto?
He podido evitar este problema para fxT2 estableciendo una latencia (es decir, retrasando por un segundo el tiempo en que cada trabajo se envía a cada una de las computadoras X). Pero parece muy ad-hoc para fxt2.
El problema es que, en realidad, fxT2 es una tarea larga que involucra números pseudoaleatorios. Al final del proceso, espero obtener una reproducción X * nessay del mismo experimento estadístico, no reproducciones nessay. ¿Cómo asegurarse de que este sea el caso y hay una manera de verificar esto?
fuente
Respuestas:
La nieve tiene un soporte explícito para inicializar el número dado de secuencias RNG en un cómputo de clúster.
Puede emplear una de dos implementaciones de RNG:
rsprng y
rlecuyer
De lo contrario, debe hacer la coordinación a mano.
fuente
Debe usar un RNG diseñado específicamente para la computación paralela. Consulte la sección "Computación paralela: números aleatorios" de la Vista de tareas de computación de alto rendimiento .
fuente