RNG, R, mclapply und Cluster von Computern

10

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?

user603
quelle
Gute Frage.
Werfen
@CSgillepsie:> Danke für den Zeiger, aber ich bin nicht sicher, ob es das gleiche Problem ist: So wie ich die Frage verstehe, auf die Sie hingewiesen haben, werden alle Prozesse von mclapply erzeugt. Hier ist es ein bisschen anders: auf jedem der Maschinen, alle Prozesse hervorgebracht durch mclapply, aber dies ist nicht der Fall für Maschinen.
user603

Antworten:

6

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:

Andernfalls müssen Sie die Koordination von Hand durchführen.

Dirk Eddelbuettel
quelle
3

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 .

Joshua Ulrich
quelle
Sie müssen auch zwischen den RNG-Streams koordinieren. Schnee macht das, Multicore kann jetzt.
Dirk Eddelbuettel