Ich berechne Monte-Carlo-Simulationen mit GNU Octave 4.0.0 auf meinem 4-Core-PC. Die Simulation dauert fast 4 Stunden, um das Skript 50.000 Mal zu berechnen (spezifisch für mein Problem), was eine Menge Rechenzeit ist. Ich habe mich gefragt, ob es eine Möglichkeit gibt, Octave auf mehreren Kernen gleichzeitig auszuführen, um die Rechenzeit zu verkürzen.
Dank im Voraus.
Antwort1
GNU Parallel unterstützt kein Multithreading, aber esWilleFühren Sie Multiprocessing durch. Das könnte für Sie ausreichend sein:
seq 50000 | parallel my_MC_sim --iteration {}
Die Standardeinstellung ist 1 Prozess pro CPU-Kern und es wird sichergestellt, dass die Ausgabe zweier paralleler Jobs nicht vermischt wird.
Sie können diese Parallelisierung sogar in das Octave-Skript einfügen. Siehehttps://www.gnu.org/software/parallel/parallel_tutorial.html#Shebang
GNU Parallel ist ein allgemeiner Parallelisierer und erleichtert die parallele Ausführung von Jobs auf derselben Maschine oder auf mehreren Maschinen, auf die Sie SSH-Zugriff haben. Es kann häufig eine for
Schleife ersetzen.
Wenn Sie 32 verschiedene Jobs haben, die Sie auf 4 CPUs ausführen möchten, können Sie die Parallelisierung ganz einfach durchführen, indem Sie auf jeder CPU 8 Jobs ausführen:
GNU Parallel startet stattdessen einen neuen Prozess, wenn einer fertig ist – wodurch die CPUs aktiv bleiben und Zeit gespart wird:
Installation
Wenn GNU Parallel nicht für Ihre Distribution gepackt ist, können Sie eine persönliche Installation durchführen, für die kein Root-Zugriff erforderlich ist. Dies ist in 10 Sekunden erledigt, indem Sie Folgendes tun:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Weitere Installationsoptionen finden Sie unterhttp://git.savannah.gnu.org/cgit/parallel.git/tree/README
Erfahren Sie mehr
Weitere Beispiele:http://www.gnu.org/software/parallel/man.html
Sehen Sie sich die Einführungsvideos an:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Gehen Sie das Tutorial durch:http://www.gnu.org/software/parallel/parallel_tutorial.html
Melden Sie sich für die E-Mail-Liste an, um Unterstützung zu erhalten:https://lists.gnu.org/mailman/listinfo/parallel