Оптимизированные математические процедуры, разработанные Intel
Библиотека математических ядер Intel oneAPI (Intel oneMKL ; ранее Intel Math Kernel Library или Intel MKL) — это библиотека оптимизированных математических процедур для научных, инженерных и финансовых приложений. Основные математические функции включают BLAS , LAPACK , ScaLAPACK , разреженные решатели, быстрые преобразования Фурье и векторную математику. [5] [6]
Библиотека поддерживает процессоры и графические процессоры Intel [2] и доступна для операционных систем Windows , Linux и macOS . [5] [6] [7]
Библиотеку математического ядра Intel oneAPI не следует путать с интерфейсами библиотеки математического ядра oneAPI (oneMKL), частью связующего кода с открытым исходным кодом , который позволяет использовать подпрограммы Intel MKL из Data Parallel C++. [8]
История и лицензирование
Intel запустила библиотеку Math Kernel Library 9 мая 2003 года и назвала ее blas.lib. [9] Команды разработчиков проекта расположены в России и США.
Библиотека была доступна в отдельной форме бесплатно в соответствии с условиями упрощенной лицензии на программное обеспечение Intel [3] , допускающей повторное распространение. [10]
С апреля 2020 года MKL стал частью oneAPI. Коммерческая поддержка oneMKL доступна при покупке в составе базового набора инструментов oneAPI .
После перехода Apple от процессоров Intel поддержку macOS планируется прекратить в 2024 году.
Производительность и привязка к поставщику
MKL и другие программы, созданные компилятором Intel C++ и компилятором Intel DPC++, повышают производительность с помощью метода, называемого многоверсионностью функций: функция компилируется или записывается для многих расширений набора команд x86 , а во время выполнения создается «главная функция». " использует инструкцию CPUID для выбора версии, наиболее подходящей для текущего процессора. Однако, пока главная функция обнаруживает ЦП, отличный от Intel, она почти всегда выбирает самую базовую (и самую медленную) функцию для использования, независимо от того, какая инструкция устанавливает поддержку ЦП. Это принесло системе с 2009 года прозвище «калекенная программа AMD». [11] По состоянию на 2020 год [обновлять]Intel MKL остается числовой библиотекой, установленной по умолчанию вместе со многими предварительно скомпилированными математическими приложениями в Windows (такими как NumPy , SymPy ). [12] [13] Несмотря на то, что MATLAB опирается на MKL, начиная с версии 2020a реализован обходной путь, который обеспечивает полную поддержку AVX2 со стороны MKL также для процессоров сторонних производителей (AMD). [14]
Подробности
Функциональные категории
Intel MKL имеет следующие функциональные категории: [15]
- Линейная алгебра : подпрограммы BLAS представляют собой операции вектор-вектор (уровень 1), матрица-вектор (уровень 2) и матрица-матрица (уровень 3) для реальных и сложных данных одинарной и двойной точности. LAPACK состоит из настроенных LU, факторизаций Холецкого и QR, решателей собственных значений и методов наименьших квадратов. MKL также включает в себя Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver (FEAST, PARDISO), PBLAS и BLACS. MKL даже лучше работает при небольших размерах, чем libxsmm.
- Поскольку MKL использует стандартные интерфейсы для BLAS и LAPACK, приложение, использующее другие реализации, может повысить производительность на процессорах Intel и совместимых процессорах путем повторного связывания с библиотеками MKL.
- MKL включает в себя множество быстрых преобразований Фурье (БПФ) от одномерных до многомерных, от комплексных к комплексным, от вещественных к комплексным и от вещественных к действительным преобразованиям произвольной длины. Приложения, написанные с использованием FFTW с открытым исходным кодом , можно легко перенести на MKL путем связывания с библиотеками-оболочками интерфейса, предоставляемыми как часть MKL, для упрощения миграции.
- Кластерные версии LAPACK и FFT также доступны как часть MKL, чтобы воспользоваться преимуществами параллелизма MPI в дополнение к параллелизму одного узла из-за многопоточности.
- Векторные математические функции включают в себя базовые математические операции с интенсивными вычислениями для вещественных и сложных типов данных одинарной и двойной точности. Они похожи на функции libm из библиотек компилятора, но работают с векторами, а не со скалярами, чтобы обеспечить лучшую производительность. Существуют различные элементы управления для настройки точности, режима ошибок и обработки денормализованных чисел для настройки поведения подпрограмм.
- Статистические функции включают генераторы случайных чисел и распределения вероятностей, оптимизированные для многоядерных процессоров. Также включены трудоемкие внутренние и внешние процедуры для вычисления базовой статистики, оценки зависимостей и т. д.
- Функции подгонки данных включают сплайны (линейные, квадратичные, кубические, справочные, ступенчатые константы) для одномерной интерполяции, которые можно использовать в приложениях анализа данных, геометрического моделирования и аппроксимации поверхностей.
- Уравнения в частных производных
- Решатели задач нелинейной оптимизации
Когда-то в MKL были включены функции Deep Neural Network , но они были удалены в версии 2020. [16] Ее преемницей является библиотека Intel oneAPI Deep Neural Network Library.
Смотрите также
Рекомендации
- ^ «Примечания к выпуску библиотеки ядра Intel® Math и новые функции» . программное обеспечение.intel.com .
- ^ ab Библиотека математического ядра Intel® oneAPI (oneMKL) | Программное обеспечение Intel®
- ^ ab «Упрощенная лицензия на программное обеспечение Intel».
- ^ «OneMKL — документация по спецификации oneAPI 1.1-ред.-1» .
- ^ ab «Библиотека ядра Intel Math».
- ^ ab «Библиотека ядра Intel Math (MKL)» .
- ^ «MKL — библиотека математического ядра Intel» . 23 апреля 2012 г.
- ^ "oneapi-src/oneMKL". oneAPI-SRC. 19 марта 2021 г.
Интерфейсы oneMKL — это реализация с открытым исходным кодом интерфейса oneMKL Data Parallel C++ (DPC++) в соответствии со спецификацией oneMKL. Он работает с несколькими устройствами (бэкэндами), используя библиотеки для конкретных устройств.
- ^ «Intel запускает библиотечный инструмент для разработчиков. (Intel Math Kernel Library 6.0) (Краткая статья)» . Телекоммирвайр . 9 мая 2003 года . Проверено 29 ноября 2009 г.
- ^ «Часто задаваемые вопросы по лицензированию библиотеки ядра Intel Math» .
- ^ Агнер Фог . «Блог Агнера о процессорах - функция Intel, «калечить AMD»» .
- ^ «Цепочка комментариев в: r/matlab — Как заставить Matlab использовать быстрый кодовый путь на процессорах AMD Ryzen/TR — прирост производительности до 250%» . реддит . Проверено 6 июня 2020 г.
- ^ «Центр высокопроизводительных вычислений Штутгарт — База знаний — Библиотеки (Hawk)» . Проверено 6 июня 2020 г.
- ^ «Больше нет искалеченных: Matlab теперь работает на процессорах AMD на полной скорости - ExtremeTech» . www.extremetech.com . Проверено 29 октября 2020 г.
- ^ администратор (14 ноября 2019 г.). «Справочник разработчика по библиотеке ядра Intel® Math — C». программное обеспечение.intel.com . Проверено 27 ноября 2019 г.
- ^ «Примечания к выпуску библиотеки ядра Intel® Math и новые функции» . Интел . Проверено 10 октября 2023 г.
Внешние ссылки
- Официальный веб-сайт
- Документация
- Форум пользователей oneMKL
- Спецификация oneAPI oneMKL
- Пакет тестов oneMKL Benchmarks