Запустить скрипт GNU Octave на нескольких ядрах

Запустить скрипт GNU Octave на нескольких ядрах

Я вычисляю симуляции Монте-Карло с помощью GNU Octave 4.0.0 на моем 4-ядерном ПК. Симуляция занимает почти 4 часа, чтобы вычислить скрипт 50 000 раз (специфически для моей проблемы), что является большим временем, потраченным на вычисления. Мне было интересно, есть ли способ запустить Octave на нескольких ядрах одновременно, чтобы сократить время вычислений.

Заранее спасибо.

решение1

GNU Parallel не поддерживает многопоточность, но онволявыполните многопроцессорную обработку, что может быть для вас достаточным:

seq 50000 | parallel my_MC_sim --iteration {}

По умолчанию будет использоваться один процесс на ядро ​​ЦП, что гарантирует, что выходные данные двух параллельных заданий не будут смешиваться.

Вы даже можете поместить эту параллелизацию в скрипт Octave. Смотритеhttps://www.gnu.org/software/parallel/parallel_tutorial.html#Shebang

GNU Parallel — это общий распараллеливатель, который позволяет легко запускать задания параллельно на одной машине или на нескольких машинах, к которым у вас есть доступ по ssh. Часто он может заменить цикл for.

Если у вас есть 32 различных задания, которые вы хотите запустить на 4 ЦП, то прямой способ распараллеливания — запустить 8 заданий на каждом ЦП:

Простое планирование

Вместо этого GNU Parallel запускает новый процесс после завершения предыдущего, сохраняя при этом активными ЦП и, таким образом, экономя время:

Параллельное планирование GNU

Монтаж

Если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует доступа root. Это можно сделать за 10 секунд, выполнив следующее:

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

Другие варианты установки см.http://git.savannah.gnu.org/cgit/parallel.git/tree/README

Узнать больше

Смотрите больше примеров:http://www.gnu.org/software/parallel/man.html

Посмотрите вступительные видеоролики:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Пройдите обучение:http://www.gnu.org/software/parallel/parallel_tutorial.html

Подпишитесь на рассылку, чтобы получить поддержку:https://lists.gnu.org/mailman/listinfo/parallel

Связанный контент