Execute o script GNU Octave em vários núcleos

Execute o script GNU Octave em vários núcleos

Estou computando simulações de Monte-Carlo usando GNU Octave 4.0.0 em meu PC de 4 núcleos. A simulação leva quase 4 horas para calcular o script 50.000 vezes (específico para o meu problema), o que é muito tempo gasto para cálculo. Eu queria saber se existe uma maneira de executar o Octave em vários núcleos simultaneamente para reduzir o tempo de cálculos.

Desde já, obrigado.

Responder1

GNU Parallel não fará multithreading, masvaifaça multiprocessamento, o que pode ser suficiente para você:

seq 50000 | parallel my_MC_sim --iteration {}

O padrão será 1 processo por núcleo da CPU e garantirá que a saída de dois trabalhos paralelos não seja misturada.

Você pode até colocar essa paralelização no script Octave. Verhttps://www.gnu.org/software/parallel/parallel_tutorial.html#Shebang

GNU Parallel é um paralelizador geral e facilita a execução de trabalhos em paralelo na mesma máquina ou em várias máquinas às quais você tem acesso ssh. Muitas vezes pode substituir um forloop.

Se você tiver 32 jobs diferentes que deseja executar em 4 CPUs, uma maneira simples de paralelizar é executar 8 jobs em cada CPU:

Agendamento simples

Em vez disso, o GNU Parallel gera um novo processo quando um deles termina - mantendo as CPUs ativas e economizando tempo:

Agendamento paralelo GNU

Instalação

Se o GNU Parallel não estiver empacotado para sua distribuição, você poderá fazer uma instalação pessoal, que não requer acesso root. Isso pode ser feito em 10 segundos fazendo o seguinte:

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

Para outras opções de instalação consultehttp://git.savannah.gnu.org/cgit/parallel.git/tree/README

Saber mais

Veja mais exemplos:http://www.gnu.org/software/parallel/man.html

Assista aos vídeos de introdução:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Percorra o tutorial:http://www.gnu.org/software/parallel/parallel_tutorial.html

Inscreva-se na lista de e-mail para obter suporte:https://lists.gnu.org/mailman/listinfo/parallel

informação relacionada