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?
Respostas:
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:
rsprng e
rlecuyer
Caso contrário, você terá que fazer a coordenação manualmente.
fonte
Você precisa usar um RNG projetado especificamente para computação paralela. Consulte a seção "Computação paralela: números aleatórios" na exibição de tarefas de computação de alto desempenho .
fonte