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
Beispiel
%Vor%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.
Tags und Links r