Так ли быстр ваш любимый С или нативная реализация линейной алгебры на D |
||||||||||||||||||||||||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2016-10-03 15:08
Тем, кто занимается системами машинного обучения и компьютерным зрением, хорошо знакома такая библиотека как OpenBLAS (Basic Linear Algebra Subprograms). OpenBLAS написан на C и используется повсеместно там где нужна работа с матрицами. Так же у него есть несколько альтернативных реализаций таких как Eigen и двух закрытых имплементацией от Intel и Apple. Все они написаны на СС++.
В настоящий момент OpenBLAS используется в матричных манипуляциях в таких языках как Julia и Python (NumPy). OpenBLAS крайне хорошо оптимизирована и значительная её часть вообще написана на ассемблере. Однако так ли хорош для вычислений чистый C, как это принято считать? Встречайте Mir GLAS! Нативная реализация библиотеки линейной алгебры на чисто D без единой вставки на ассемблере! Для компиляции библиотеки Mir GLAS нам потребуется компилятор LDC (LLVM D Compiler). Компилятор DMD официально не поддерживается т.к. он не поддерживает инструкции AVX и AVX2. Тестовая конфигурация будет состоять из:
» Код самого теста можно получить тут. » Mir GLAS базируется на библиотеке mir.ndslice Mir GLAS может быть легко использован в любом языке поддерживающим C ABI. Делается это элементарно:
Для сравнения в OpenBLAS потребуется написать следующий код:
При проведении теста установлено следующее значение переменных:
Eigen собран с флагами `EIGEN_TEST_AVX` и `EIGEN_TEST_FMA`:
Результаты (больше - лучше): Итоги: - Mir GLAS значительно опережает OpenBLAS и Apple Accelerate по всем показателям. - Mir GLAS оказывается быстрее почти в два раза чем Eigen и Apple Accelerate при работе с матрицами. - По скорости Mir GLAS оказывается сопоставим с проприетарным Intel MKL, который является самым быстрым в своем роде. - Благодаря своему дизайну Mir GLAS легко может быть адаптирован для новых архитектур. .S. В настоящий момент на базе GLAS активно развивается система компьютерного зрения DCV. .P.S. Оригинальный автор присутствует в комментах под ником 9il » Оригинальная статья расположена в блоге автора. Источник: habrahabr.ru Комментарии: |
|||||||||||||||||||||||||||