Ich führe eine Simulation auf R und einem Computercluster aus und habe das folgende Problem. Auf jedem der X Computer, die ich ausführe:
fxT2 <- function(i) runif(10)
nessay <- 100
c(mclapply(1:nessay, fxT2), recursive=TRUE)
Es gibt 32 Computer mit jeweils 16 Kernen. Etwa 2% der Zufallszahlen sind jedoch identisch. Welche Strategien würden Sie anwenden, um dies zu vermeiden?
Ich konnte dieses Problem für fxT2 vermeiden, indem ich eine Latenz festlegte (dh die Zeit, zu der jeder Job an jeden der X-Computer gesendet wird, um eine Sekunde verzögerte). Aber es scheint sehr ad-hoc zu fxt2.
Das Problem ist, dass fxT2 in Wirklichkeit eine lange Aufgabe mit Pseudozufallszahlen ist. Am Ende des Prozesses erwarte ich eine X * nessay-Reproduktion desselben statistischen Experiments, keine Nessay-Reproduktion. Wie kann man sicherstellen, dass dies tatsächlich der Fall ist und gibt es eine Möglichkeit, dies zu überprüfen?
Antworten:
Der Schnee unterstützt ausdrücklich die Initialisierung der angegebenen Anzahl von RNG-Streams in einer Clusterberechnung.
Es kann eine von zwei RNG-Implementierungen verwenden:
rsprng und
rlecuyer
Andernfalls müssen Sie die Koordination von Hand durchführen.
quelle
Sie müssen ein RNG verwenden, das speziell für paralleles Rechnen entwickelt wurde. Weitere Informationen finden Sie im Abschnitt "Paralleles Rechnen: Zufallszahlen" in der Aufgabenansicht für Hochleistungsrechnen .
quelle