Grizzly 0 3 июня, 2016 Опубликовано 3 июня, 2016 · Жалоба На работе приходится вместо MATLAB использовать Octave. Разбираюсь с тем, как ускорить время моделирования. Насколько я понял, JIT компиляция, недавно появившаяся в Octave, отличается от того, что применяется в MATLAB. В MATLAB она выполняется дейтсвительно "на лету" при запуске скрипта, в Octave необходимо генерировать функции с помощью LLVM компилятора, то есть весьма похоже на генерацию C/C++ кода в MATLAB с использованием coder. Одновременно с этим разбираюсь, как устроен процесс распараллеливания в пакете parallel для ядер на одной машине. Кто-нибудь занимался сравнением данных методов? Для MATLAB различные пути решения такой задачи известны, а что лучше для Octave, пока до конца не понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 9 июня, 2016 Опубликовано 9 июня, 2016 · Жалоба Не отписался сразу о результатах. В общем, в последние пару лет разработчики 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_ 0 9 июня, 2016 Опубликовано 9 июня, 2016 · Жалоба Вот тут есть сравнение - julialang.org, не хватает только PyPy. А зачем именно Octave? Почему не Lua/Python/R/Julia итд? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 9 июня, 2016 Опубликовано 9 июня, 2016 · Жалоба Вот тут есть сравнение - julialang.org, не хватает только PyPy. А зачем именно Octave? Почему не Lua/Python/R/Julia итд? Огромное спасибо за ссылку. Нечто похожее видел несколько лет назад, но сейчас не смог найти, да и новые версии явно должны показывать другие результаты. Так получилось, что есть большая база моделей (некоторым уже порядка 8-10 лет), написанная на MATLAB, причем даже не мной. Область применения - связь и ЦОС. Сейчас нужно работать с этими моделями в рамках использования свободного ПО, поэтому альтернатив нет. Новые алгоритмы планирую писать на Python с использованием SciPy. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться