10 votos

RNG, R, mclapply y clúster de computadoras

Estoy ejecutando una simulación en R y un clúster de computadoras y tengo el siguiente problema. En cada una de las X computadoras 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 logrado evitar este problema para fxT2 configurando una latencia (es decir, retrasando un segundo el momento en que se envía cada trabajo a cada una de las X computadoras). Pero parece muy ad hoc para fxT2.

El problema es que en realidad fxT2 es una tarea larga que implica números pseudoaleatorios. Al final del proceso, espero obtener X*nessay reproducción del mismo experimento estadístico, no nessay reproducciones. ¿Cómo asegurarse de que este sea efectivamente el caso y hay alguna manera de verificar esto?.

24voto

Jay Puntos 395

El paquete snow tiene soporte explícito para inicializar el número dado de secuencias RNG en una computación en cluster.

Puede utilizar una de dos implementaciones RNG:

De lo contrario, tendrás que coordinarlo manualmente.

3voto

ebarrera Puntos 107

Necesitas utilizar un RNG específicamente diseñado para la computación en paralelo. Consulta la sección "Computación paralela: Números aleatorios" de la Vista de tareas de Computación de Alto Rendimiento.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X