Intel oneAPI Math Kernel Library , ранее называемая Intel Math Kernel Library ( Intel MKL ), представляет собой библиотеку оптимизированных математических процедур для научных, инженерных и финансовых приложений. Основные математические функции включают BLAS , LAPACK , ScaLAPACK , разреженные решатели, быстрые преобразования Фурье и векторную математику. [4] [5]
Разработчики) | Intel |
---|---|
Первый выпуск | 9 мая 2003 г . |
Стабильный выпуск | 2021.1 / 8 декабря 2020 г . [1] |
Написано в | C / C ++ , компилятор Intel DPC ++ , Фортран |
Операционная система | Microsoft Windows , Linux , macOS |
Платформа | Intel Xeon , Intel Xe , Intel Core , Intel Atom , Intel Xeon Phi [2] |
Тип | Библиотека и фреймворк |
Лицензия | бесплатное ПО под ISSL [3] |
Веб-сайт | программное обеспечение |
Библиотека поддерживает процессоры Intel [2] и доступна для операционных систем Windows , Linux и macOS . [4] [5] [6]
Библиотеку ядра Intel oneAPI Math не следует путать с библиотекой ядра oneAPI Math (oneMKL), частью связующего кода с открытым исходным кодом, который позволяет использовать подпрограммы Intel MKL из Data Parallel C ++. [7]
История и лицензирование
Intel запустила библиотеку математического ядра 9 мая 2003 г. и назвала ее blas.lib. [8] Команды разработчиков проекта находятся в России и США.
Библиотека была доступна в автономной форме бесплатно в соответствии с условиями Intel Simplified Software License [3], которые разрешают распространение. [9]
С апреля 2020 года MKL стал частью oneAPI. Коммерческая поддержка oneMKL доступна при покупке в составе oneAPI Base Toolkit.
Производительность и привязка к поставщику
MKL и другие программы , порожденной ++ Compiler Intel C и Intel DPC ++ Compiler повышения производительности с помощью методики , называемой функцией мульти-версиями: функция компилируется или написана для многих x86 набора инструкций расширений, и во время выполнения «мастер функция "использует инструкцию CPUID для выбора версии, наиболее подходящей для текущего процессора. Однако до тех пор, пока основная функция обнаруживает ЦП не от Intel, она почти всегда выбирает для использования самую простую (и самую медленную) функцию, независимо от того, какие инструкции устанавливает процессор, который, по утверждениям, поддерживает. Это привело к тому, что с 2009 года система получила прозвище «парализовать AMD» . [10] По состоянию на 2020 год.[Обновить], Intel MKL, который остается числовой библиотекой, установленной по умолчанию вместе со многими предварительно скомпилированными математическими приложениями в Windows (такими как NumPy , SymPy ). [11] [12] Несмотря на использование MKL, MATLAB реализовал обходной путь, начиная с версии 2020a, который обеспечивает полную поддержку AVX2 MKL также для процессоров, отличных от Intel (AMD) [13]
В более старых версиях установка недокументированной переменной среды MKL_DEBUG_CPU_TYPE=5
могла использоваться для переопределения выбора кодового пути, зависящего от строки поставщика, и активации поддерживаемых инструкций до AVX2 в системах на базе процессоров AMD, что приводило к равной или даже лучшей производительности по сравнению с процессорами Intel. [14] [15] [16] По крайней мере, начиная с обновления 1 2020, переменная среды больше не работает. [11] [12]
Были обнаружены по крайней мере два маршрута для подключения внутренних подпрограмм MKL для удаления дискриминации. Ловушка может быть добавлена во время компиляции путем связывания или во время выполнения путем инъекции . Агнер Фог обнаружил, что у двоичных файлов MKL и ICC также есть скрытый недискриминационный диспетчер. В mkl_serv_intel_cpu_true
2019 году была обнаружена функция. Intel_dispatch_patch Fog предоставляет код, который перехватывает оба маршрута. [17] По словам Даниэля де Кока, простое исправление последней функции в MKL 2020 Update 1 улучшает производительность AMD Zen. [18]
Подробности
Функциональные категории
Intel MKL имеет следующие функциональные категории: [19]
- Линейная алгебра : подпрограммы BLAS - это операции вектор-вектор (уровень 1), матрица-вектор (уровень 2) и матрица-матрица (уровень 3) для вещественных и комплексных данных с одинарной и двойной точностью. LAPACK состоит из настроенных LU, разложений Холецкого и QR, решателей собственных значений и наименьших квадратов. MKL также включает в себя Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver , PBLAS и BLACS.
- Поскольку MKL использует стандартные интерфейсы для BLAS и LAPACK, приложение, использующее другие реализации, может повысить производительность на Intel и совместимых процессорах путем повторного связывания с библиотеками MKL.
- MKL включает в себя множество быстрых преобразований Фурье (БПФ) от одномерного к многомерному, от комплексного к комплексному, от реального к комплексному и от реального к реальному преобразованию произвольной длины. Приложения, написанные с помощью FFTW с открытым исходным кодом, можно легко перенести на MKL путем связывания с библиотеками оболочки интерфейса, предоставляемыми как часть MKL, для облегчения миграции.
- Кластерные версии LAPACK и FFT также доступны как часть MKL, чтобы использовать преимущества параллелизма MPI в дополнение к параллелизму одного узла из многопоточности.
- Векторные математические функции включают в себя интенсивные вычислительные основные математические операции для вещественных и сложных типов данных с одинарной и двойной точностью. Они похожи на функции libm из библиотек компилятора, но работают с векторами, а не со скалярами, чтобы обеспечить лучшую производительность. Существуют различные элементы управления для настройки точности, режима ошибок и обработки денормализованных чисел для настройки поведения подпрограмм.
- Статистические функции включают генераторы случайных чисел и распределения вероятностей. оптимизирован для многоядерных процессоров. Также включены ресурсоемкие внутренние и внешние подпрограммы для вычисления базовой статистики, оценки зависимостей и т. Д.
- Функции аппроксимации данных включают сплайны (линейные, квадратичные, кубические, поисковые, ступенчатые) для одномерной интерполяции, которые можно использовать в приложениях для анализа данных, геометрического моделирования и аппроксимации поверхностей.
- Глубокая нейронная сеть
- Уравнения с частными производными
- Решатели задач нелинейной оптимизации
Смотрите также
- Список числовых библиотек
- Автоматически настраиваемое программное обеспечение линейной алгебры (ATLAS)
- GotoBLAS и OpenBLAS
- Интегрированные примитивы производительности
Рекомендации
- ^ «Примечания к выпуску библиотеки Intel® Math Kernel и новые функции» . software.intel.com .
- ^ a b Библиотека ядра Intel® oneAPI Math (oneMKL) | Программное обеспечение Intel®
- ^ а б «Упрощенная лицензия на программное обеспечение Intel» .
- ^ а б «Библиотека ядра Intel Math» .
- ^ а б «Библиотека ядра Intel Math (MKL)» .
- ^ «MKL - библиотека Intel Math Kernel» .
- ^ "oneapi-src / oneMKL" . oneAPI-SRC. 19 марта 2021
г. Интерфейсы oneMKL - это реализация интерфейса oneMKL Data Parallel C ++ (DPC ++) с открытым исходным кодом в соответствии со спецификацией oneMKL. Он работает с несколькими устройствами (бэкэндами), используя библиотеки для конкретных устройств внизу.
- ^ «Intel запускает библиотечный инструмент для разработчиков. (Intel Math Kernel Library 6.0) (Краткая статья)» . Telecomworldwire . 9 мая 2003 . Проверено 29 ноября 2009 года .
- ^ «Часто задаваемые вопросы о лицензировании библиотеки Intel Math Kernel» .
- ^ Агнер Туман . "Блог о процессорах Агнера - функция Intel" нанести вред AMD " .
- ^ а б «Цепочка комментариев в: r / matlab - Как заставить Matlab использовать быстрый путь кода на процессорах AMD Ryzen / TR - прирост производительности до 250%» . Reddit . Проверено 6 июня 2020 .
- ^ а б «Центр высокопроизводительных вычислений в Штутгарте - База знаний - Библиотеки (Hawk)» . Проверено 6 июня 2020 .
- ^ «Больше не калек: Matlab теперь работает на процессорах AMD на полной скорости - ExtremeTech» . www.extremetech.com . Проверено 29 октября 2020 .
- ^ «r / matlab - Как заставить Matlab использовать быстрый кодовый путь на процессорах AMD Ryzen / TR - до 250% прироста производительности» . Reddit . Проверено 27 ноября 2019 .
- ^ Sherbaz (06.11.2019), GitHub - SherbazHashmi / HackathonServer: Hackathon Python Server с интеграцией ArcGIS , получено 27.11.2019
- ^ «MKL имеет плохую производительность на процессоре AMD» . Мингру Ян .
- ^ https://www.agner.org/forum/viewtopic.php?t=6
- ^ де Кок, Даниэль. «Intel MKL на AMD Zen» . danieldk.eu .
- ^ админ (2019-11-14). «Справочник разработчика для библиотеки Intel® Math Kernel - C» . software.intel.com . Проверено 27 ноября 2019 .
Внешние ссылки
- Официальный веб-сайт
- Документация
- Форум пользователей MKL