Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ускорение вычислений в Octave
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
Grizzzly
На работе приходится вместо MATLAB использовать Octave. Разбираюсь с тем, как ускорить время моделирования.

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

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

Кто-нибудь занимался сравнением данных методов? Для MATLAB различные пути решения такой задачи известны, а что лучше для Octave, пока до конца не понятно.
Grizzzly
Не отписался сразу о результатах.

В общем, в последние пару лет разработчики 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-компиляции, чтобы не тратить время на сырой продукт.
enclis_
Вот тут есть сравнение - julialang.org, не хватает только PyPy. А зачем именно Octave? Почему не Lua/Python/R/Julia итд?
Grizzzly
Цитата(enclis_ @ Jun 9 2016, 16:17) *
Вот тут есть сравнение - julialang.org, не хватает только PyPy. А зачем именно Octave? Почему не Lua/Python/R/Julia итд?

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

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

Новые алгоритмы планирую писать на Python с использованием SciPy.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.