RNG, R, mclapply e cluster de computadores


10

Estou executando uma simulação no R e em um cluster de computadores e tenho o seguinte problema. Em cada um dos computadores X, eu corro:

fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)

Existem 32 computadores, cada um com 16 núcleos. No entanto, cerca de 2% dos números aleatórios são idênticos. Que estratégias você adotaria para evitar isso?

Consegui evitar esse problema no fxT2 definindo uma latência (ou seja, atrasando um segundo o tempo em que cada trabalho é enviado para cada um dos computadores X). Mas parece muito ad-hoc para o fxt2.

O problema é que, na realidade, o fxT2 é uma tarefa longa que envolve números pseudo-aleatórios. No final do processo, espero obter reprodução X * nessay do mesmo experimento estatístico, não reproduções de nessay. Como garantir que esse seja realmente o caso e se existe uma maneira de verificar isso?


Boa pergunta. Ter um olhar para esta questão em números aleatórios eo pacote multicore
csgillespie

@ CSGillepsie:> obrigado pelo ponteiro, mas não tenho certeza se é o mesmo problema: da maneira como entendo a pergunta que você apontou, todos os processos são gerados pelo mclapply. Aqui está um pouco diferente: em cada uma das máquinas, todos os processos são gerados pelo mclapply, mas esse não é o caso entre as máquinas.
user603

Respostas:


6

A neve possui suporte explícito para inicializar o número determinado de fluxos RNG em uma computação de cluster.

Ele pode empregar uma das duas implementações RNG:

Caso contrário, você terá que fazer a coordenação manualmente.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.