Korzystam z symulacji na R i klastrze komputerów i mam następujący problem. Na każdym z X komputerów uruchamiam:
fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)
Jest 32 komputerów, każdy z 16 rdzeniami. Jednak około 2% liczb losowych jest identycznych. Jakie strategie zastosowałbyś, aby tego uniknąć?
Udało mi się uniknąć tego problemu dla fxT2, ustawiając opóźnienie (tj. Opóźnienie o sekundę czasu, w którym każde zadanie jest wysyłane do każdego z X komputerów). Ale wydaje się bardzo ad hoc do fxt2.
Problem polega na tym, że w rzeczywistości fxT2 jest długim zadaniem obejmującym pseudolosowe liczby. Pod koniec tego procesu spodziewam się, że otrzymam X * nessay tego samego eksperymentu statystycznego, a nie nessay reprodukcji. Jak upewnić się, że rzeczywiście tak jest i czy istnieje sposób, aby to sprawdzić ?.
źródło
Odpowiedzi:
Śnieg ma wyraźne poparcie dla zainicjowania podana liczba RNG strumieni w obliczeniach klastra.
Może wykorzystywać jedną z dwóch implementacji RNG:
rsprng i
rlecuyer
W przeciwnym razie koordynację należy wykonać ręcznie.
źródło
Musisz użyć RNG specjalnie zaprojektowanego do obliczeń równoległych. Zobacz sekcję „Obliczenia równoległe: liczby losowe” w widoku zadań obliczeń o wysokiej wydajności .
źródło