Números aleatorios y el paquete multinúcleo

Pregunta:

Al programar en R, he usado el paquete multinúcleo varias veces. Sin embargo, nunca he visto una declaración sobre cómo maneja sus números aleatorios. Cuando uso openMP con C, tengo cuidado de usar un RNG paralelo adecuado, pero con R supongo que sucede algo sensato. ¿Alguien puede confirmar que sucede algo sensato?

Ejemplo

De la documentación, tenemos

x <- foreach(icount(1000), .combine = "+") %do% rnorm(4)

¿Cómo se rnorm los rnorm ?

Respuesta:

No estoy seguro de cómo funciona foreach (del paquete doMC, supongo), pero en multinúcleo, si hiciste algo como mclapply el parámetro mc.set.seed se establece por defecto en TRUE que le da a cada proceso una semilla diferente (por ejemplo, mclapply(1:1000, rnorm) ). Supongo que su código se traduce a algo similar, es decir, se reduce a llamadas a parallel que tiene la misma convención.

Pero vea también la página 16 de las diapositivas de Charlie Geyer, que recomienda el paquete rlecuyer para flujos independientes paralelos con garantías teóricas. La página de Geyer también tiene un código de muestra en R para las diferentes configuraciones.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım