реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Ускорение вычислений в Octave
Grizzzly
сообщение Jun 3 2016, 10:32
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



На работе приходится вместо MATLAB использовать Octave. Разбираюсь с тем, как ускорить время моделирования.

Насколько я понял, JIT компиляция, недавно появившаяся в Octave, отличается от того, что применяется в MATLAB. В MATLAB она выполняется дейтсвительно "на лету" при запуске скрипта, в Octave необходимо генерировать функции с помощью LLVM компилятора, то есть весьма похоже на генерацию C/C++ кода в MATLAB с использованием coder.

Одновременно с этим разбираюсь, как устроен процесс распараллеливания в пакете parallel для ядер на одной машине.

Кто-нибудь занимался сравнением данных методов? Для MATLAB различные пути решения такой задачи известны, а что лучше для Octave, пока до конца не понятно.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 9 2016, 10:16
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Не отписался сразу о результатах.

В общем, в последние пару лет разработчики Octave хорошо повысили быстродействие пакета. На одном ядре AMD с частотой 3,3 ГГц мой тест выполнялся за 1,5 секунды для Octave 4.0, на другом ПК с Intel i7 4 ГГц в MATLAB 2015b за 0,6 с. Учитывая разные частоты процессоров, можно сказать, что Octave проигрывает примерно в 2 раза, а не на порядки, как считалось и писалось в обсуждениях раньше. Понятно, что данный конкретный пример не является показателем, но чтение зарубежных форумов подтверждает, что Octave сейчас оптимизируют.

Пакет parallel уменьшил время исполнения на 8 ядрах AMD в 5,4 раза, что ожидаемо. Сам процесс распараллеливания (синтаксис) понравился больше, чем parfor у MATLAB.

JIT-компиляция использует LLMV+clang, она в довольно сыром состоянии. На своей Linux Gentoo не удалось скомпилировать сам Octave с нужными ключами, поскольку его версия 4.0.2 требует LLVM >= 3.5, а jit-compiler работает только при <= 3.3. Действительно, это компиляция не "на лету", выигрыш, по немногим материалам в сети, сопоставим с выигрышем от генерации mex в MATLAB (для алгоритмов, содержащих циклы).

Пока что принято решение отложить попытки подключения jit-компиляции, чтобы не тратить время на сырой продукт.
Go to the top of the page
 
+Quote Post
enclis_
сообщение Jun 9 2016, 13:17
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 119
Регистрация: 21-09-09
Из: Москва
Пользователь №: 52 501



Вот тут есть сравнение - julialang.org, не хватает только PyPy. А зачем именно Octave? Почему не Lua/Python/R/Julia итд?
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Jun 9 2016, 13:27
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(enclis_ @ Jun 9 2016, 16:17) *
Вот тут есть сравнение - julialang.org, не хватает только PyPy. А зачем именно Octave? Почему не Lua/Python/R/Julia итд?

Огромное спасибо за ссылку. Нечто похожее видел несколько лет назад, но сейчас не смог найти, да и новые версии явно должны показывать другие результаты.

Так получилось, что есть большая база моделей (некоторым уже порядка 8-10 лет), написанная на MATLAB, причем даже не мной. Область применения - связь и ЦОС. Сейчас нужно работать с этими моделями в рамках использования свободного ПО, поэтому альтернатив нет.

Новые алгоритмы планирую писать на Python с использованием SciPy.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 03:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.01335 секунд с 7
ELECTRONIX ©2004-2016