Ejecute el script GNU Octave en múltiples núcleos

Ejecute el script GNU Octave en múltiples núcleos

Estoy calculando simulaciones de Monte-Carlo usando GNU Octave 4.0.0 en mi PC de 4 núcleos. La simulación tarda casi 4 horas en calcular el script 50.000 veces (específico de mi problema), lo que supone una gran cantidad de tiempo dedicado al cálculo. Me preguntaba si hay alguna manera de ejecutar Octave en varios núcleos simultáneamente para reducir el tiempo de cálculo.

Gracias de antemano.

Respuesta1

GNU Parallel no realizará subprocesos múltiples, perovoluntadhaz multiprocesamiento, lo que podría ser suficiente para ti:

seq 50000 | parallel my_MC_sim --iteration {}

De forma predeterminada, habrá 1 proceso por núcleo de CPU y se asegurará de que la salida de dos trabajos paralelos no se mezcle.

Incluso puedes poner esta paralelización en el script Octave. Verhttps://www.gnu.org/software/parallel/parallel_tutorial.html#Shebang

GNU Parallel es un paralelizador general y facilita la ejecución de trabajos en paralelo en la misma máquina o en varias máquinas a las que tiene acceso ssh. A menudo puede reemplazar un forbucle.

Si tiene 32 trabajos diferentes que desea ejecutar en 4 CPU, una forma sencilla de paralelizar es ejecutar 8 trabajos en cada CPU:

Programación sencilla

En cambio, GNU Parallel genera un nuevo proceso cuando uno finaliza, manteniendo las CPU activas y, por lo tanto, ahorrando tiempo:

Programación paralela GNU

Instalación

Si GNU Parallel no está empaquetado para su distribución, puede realizar una instalación personal, que no requiere acceso de root. Se puede hacer en 10 segundos haciendo esto:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Para otras opciones de instalación consultehttp://git.savannah.gnu.org/cgit/parallel.git/tree/README

Aprende más

Ver más ejemplos:http://www.gnu.org/software/parallel/man.html

Mira los vídeos de introducción:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Sigue el tutorial:http://www.gnu.org/software/parallel/parallel_tutorial.html

Regístrese en la lista de correo electrónico para obtener ayuda:https://lists.gnu.org/mailman/listinfo/parallel

información relacionada