Wenn Sie es mit HPC-Clustern ernst meinen, verwenden Sie MPI-Cluster, nicht SOCK. MPI ist der Standard für Nicht-Shared-Memory-Computing, und die meisten Cluster sind für MPI optimiert.
Bei HPC müssen Sie auch einen Job-Skript R. starten Es gibt mehrere Möglichkeiten, es zu starten, können Sie mpirun
verwenden, oder die Arbeiter direkt von R. Scheduler aufrufen wird die MPI-Umgebung und R aufgebaut werden herauszufinden, welche Knoten zu verwenden sind. Beginnen Sie klein, sagen Sie mit 4 Mitarbeitern, und erhöhen Sie die Anzahl, bis Sie das optimale Niveau erreicht haben. Die meisten Aufgaben können 3600 CPUs nicht effizient verwenden.
Schließlich, wenn Sie mehrere CPU-s über MPI verwenden, empfehle ich dringend, Rhpc anstelle von Rmpi-Paket zu verwenden. Es nutzt eine effizientere MPI-Kommunikation und gibt Ihnen einen spürbaren Geschwindigkeitsschub.
Auf einem drehmomentgesteuerten System, das ich etwas entlang der Linien bin mit:
Rhpc_initialize()
nodefile <- Sys.getenv("PBS_NODEFILE")
nodes <- readLines(nodefile)
commSize <- length(nodes)
cl <- Rhpc_getHandle(commSize)
Rhpc_Export(cl, c("data"))
...
result <- Rhpc_lapply(cl, 1:1000, runMySimulation)
...
Rhpc_finalize()
Der drehmoment spezifischen Teil ist der nodefile Teil auf diese Weise ich weiß, wie viele Arbeiter zu schaffen. Im Jobskript starte ich R wie Rscript >>output.txt myScript.R
.
Als Randnotiz: Sind Sie sicher myfun(files, ...)
ist richtig? Vielleicht meinst du myfun(files[i], ...)
?
Lassen Sie uns wissen, wie es geht, ich bin glücklich, zu helfen :-)