RNG, R, mclapply y cluster de computadoras


10

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?


Buena pregunta. Eche un vistazo a esta pregunta sobre números aleatorios y el paquete multinúcleo
csgillespie

@CSgillepsie:> gracias por el puntero, pero no estoy seguro de que sea el mismo problema: por la forma en que entiendo la pregunta que apuntaste, mclapply genera todos los procesos. Aquí es un poco diferente: en cada una de las máquinas, mclapply genera todos los procesos, pero este no es el caso en todas las máquinas.
usuario603

Respuestas:


6

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:

De lo contrario, debe hacer la coordinación a mano.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.