foreach% dopar% verwendet die sequentielle Worker-Einrichtung mit dem PSock-Cluster?

8

Frage

Ich habe bemerkt, dass foreach /% dopar% sequentielle , nicht parallele Einstellungen eines Clusters durchführt, bevor Tasks parallel ausgeführt werden. Wenn jeder Worker ein Dataset benötigt und N Sekunden dauert, um das Dataset an den Worker zu übertragen, gibt foreach% dopar% #workers * N seconds of setup Zeit aus. Dies kann für große # Arbeiter oder große N (große zu übertragende Datensätze) von Bedeutung sein.

Meine Frage ist, ob dies beabsichtigt ist oder gibt es einen Parameter / eine Einstellung, die ich in foreach oder vielleicht in der Cluster-Generierung vermisse?

Einrichtung

  • R 2.15.2
  • neueste Versionen von foreach / parallel / doParallel ab heute (1.7.2013)
  • Windows 7 x64

Beispiel

%Vor%     
SFun28 07.01.2013, 16:05
quelle

1 Antwort

3

Danke an Rich at Revolution Computing für die Hilfe bei diesem ....

clusterCall verwendet eine for-Schleife, um Daten an jeden Worker zu senden. Da R nicht multi-threaded ist, muss die for-Schleife sequentiell sein.

Es gibt ein paar Lösungen (die jemanden erfordern würden, um sie zu kodieren). R könnte C / C ++ aufrufen, um das Worker-Setup zu fädeln. Oder die Arbeiter könnten die Daten aus einer Datei auf der Festplatte ziehen. Oder die Arbeiter könnten auf dem gleichen Socket hören und der Master könnte nur einmal in den Socket schreiben und die Daten an alle Arbeiter senden lassen.

    
SFun28 14.01.2013, 03:57
quelle

Tags und Links