Библиотека математических ядер
Разработчик(и) | Интел |
---|---|
Первоначальный выпуск | ноябрь 1994 г |
Стабильная версия | 2024.2 / 14 июня 2024 г [1] |
Написано в | C / C++ , DPC++ , Фортран |
Операционная система | Microsoft Windows , Линукс |
Платформа | Процессор [2] графический процессор
|
Тип | Библиотека и фреймворк |
Лицензия | бесплатное ПО под ISSL [3] [4] |
Веб-сайт | www |
Intel oneAPI Библиотека математических ядер (Intel oneMKL ), ранее известная как Библиотека математических ядер Intel, представляет собой библиотеку оптимизированных математических процедур для научных, инженерных и финансовых приложений. Основные математические функции включают BLAS , LAPACK , ScaLAPACK , разреженные решатели, быстрые преобразования Фурье и векторную математику. [5] [6]
Библиотека поддерживает процессоры x86 и графические процессоры Intel. [2] и доступен для Windows и Linux операционных систем . [5] [6] [7]
Библиотеку математического ядра Intel oneAPI не следует путать с интерфейсами oneMKL, библиотекой-оболочкой с открытым исходным кодом , которая позволяет приложениям DPC++ вызывать подпрограммы oneMKL, которые можно выгружать на несколько аппаратных архитектур и поставщиков, определенных во время выполнения. [8]
История и лицензирование
[ редактировать ]В ноябре 1994 года Intel выпустила библиотеку математического ядра oneAPI и назвала ее библиотекой Intel BLAS. [9] В 1996 году библиотека была переименована в Intel Math Kernel Library до апреля 2020 года, когда Intel oneMKL стала частью инициативы oneAPI по поддержке нескольких аппаратных архитектур, сохранив нынешнее название Intel oneAPI Math Kernel Library.
Библиотека доступна как в составе oneAPI Toolkits, так и в автономном виде бесплатно на условиях упрощенной лицензии на программное обеспечение Intel. [3] которые позволяют перераспределение. [10] Коммерческая поддержка Intel oneMKL доступна при покупке в составе базового набора инструментов oneAPI .
После перехода Apple от процессоров x86 последней версией Intel oneMKL, доступной для macOS, является версия 2023.2.2, и ее удаление планируется удалить к концу 2024 года.
Производительность и привязка к поставщику
[ редактировать ]MKL и другие программы, созданные компилятором Intel C++ и компилятором Intel DPC++, повышают производительность с помощью метода, называемого многоверсионностью функций: функция компилируется или записывается для многих расширений набора команд x86 , а во время выполнения создается «главная функция». " использует инструкцию CPUID для выбора версии, наиболее подходящей для текущего процессора. Однако, пока главная функция обнаруживает ЦП, отличный от Intel, она почти всегда выбирает самую базовую (и самую медленную) функцию для использования, независимо от того, какая инструкция устанавливает поддержку ЦП. Это с 2009 года принесло системе прозвище «калека AMD» . [11] По состоянию на 2020 год [update]Intel MKL остается числовой библиотекой, установленной по умолчанию вместе со многими предварительно скомпилированными математическими приложениями в Windows (такими как NumPy , SymPy ). [12] [13] полагается на MKL, Несмотря на то, что MATLAB начиная с версии 2020a реализован обходной путь, который обеспечивает полную поддержку AVX2 со стороны MKL также для процессоров сторонних производителей (AMD). [14]
Подробности
[ редактировать ]Функциональные категории
[ редактировать ]Intel oneMKL имеет следующие функциональные категории: [15]
- Линейная алгебра : подпрограммы BLAS представляют собой операции вектор-вектор (уровень 1), матрица-вектор (уровень 2) и матрица-матрица (уровень 3) для реальных и сложных данных одинарной и двойной точности. LAPACK состоит из настроенных LU, факторизаций Холецкого и QR, решателей собственных значений и методов наименьших квадратов. MKL также включает в себя Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver (FEAST, PARDISO), PBLAS и BLACS. MKL даже лучше работает при небольших размерах, чем libxsmm .
- Поскольку oneMKL использует стандартные интерфейсы для BLAS и LAPACK, приложение, использующее другие реализации, может повысить производительность на процессорах Intel и совместимых процессорах путем повторного связывания с библиотеками MKL.
- oneMKL включает в себя множество быстрых преобразований Фурье (БПФ) от одномерных до многомерных, от комплексных к комплексным, от вещественных к комплексным и от вещественных к действительным преобразованиям произвольной длины. с открытым исходным кодом Приложения, написанные с использованием FFTW , можно легко перенести на MKL путем связывания с библиотеками-оболочками интерфейса, предоставляемыми как часть MKL, для упрощения миграции.
- Кластерные версии LAPACK и FFT также доступны как часть MKL, чтобы воспользоваться преимуществами параллелизма MPI в дополнение к параллелизму одного узла из-за многопоточности.
- Векторные математические функции включают в себя базовые математические операции с интенсивными вычислениями для вещественных и сложных типов данных одинарной и двойной точности. Они похожи на функции libm из библиотек компилятора, но работают с векторами, а не со скалярами, чтобы обеспечить лучшую производительность. Существуют различные элементы управления для настройки точности, режима ошибок и обработки денормализованных чисел для настройки поведения подпрограмм.
- Функции статистики включают генераторы случайных чисел и распределения вероятностей, оптимизированные для многоядерных процессоров. Также включены трудоемкие внутренние и внешние процедуры для вычисления базовой статистики, оценки зависимостей и т. д.
- Функции подгонки данных включают сплайны (линейные, квадратичные, кубические, справочные, ступенчатые константы) для одномерной интерполяции, которые можно использовать в приложениях анализа данных, геометрического моделирования и аппроксимации поверхностей.
- Уравнения в частных производных
- Решатели задач нелинейной оптимизации
Когда-то oneMKL включал функции глубокой нейронной сети , но они были удалены в версии 2020 как побочный продукт, породивший библиотеку глубоких нейронных сетей Intel oneAPI с открытым исходным кодом. [16]
См. также
[ редактировать ]- OneAPI (ускорение вычислений)
- Список числовых библиотек
- Программное обеспечение автоматически настраиваемой линейной алгебры (ATLAS)
- ГотоБЛАС и OpenBLAS
- Интегрированные примитивы производительности
- Коллекция числовых библиотек - от NEC для их векторного процессора.
Ссылки
[ редактировать ]- ^ «Примечания к выпуску и новые функции библиотеки ядра Intel® Math» . программное обеспечение.intel.com .
- ^ Jump up to: а б Библиотека математических ядер Intel® oneAPI (oneMKL) | Программное обеспечение Intel®
- ^ Jump up to: а б «Упрощенная лицензия на программное обеспечение Intel» .
- ^ «OneMKL — документация по спецификации oneAPI 1.1-ред.-1» .
- ^ Jump up to: а б «Библиотека ядра Intel Math» .
- ^ Jump up to: а б «Библиотека ядра Intel Math (MKL)» .
- ^ «MKL — библиотека математического ядра Intel» . 23 апреля 2012 г.
- ^ "oneapi-src/oneMKL" . oneAPI-SRC. 19 марта 2021 г.
Интерфейсы oneMKL — это реализация с открытым исходным кодом интерфейса oneMKL Data Parallel C++ (DPC++) в соответствии со спецификацией oneMKL. Он работает с несколькими устройствами (бэкэндами), используя библиотеки для конкретных устройств.
- ^ «Библиотека ядра Intel Math, справочное руководство, информация о версии» (PDF) . в. 2004. с. ii . Проверено 25 июля 2024 г.
- ^ «Часто задаваемые вопросы по лицензированию библиотеки ядра 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.11.2019). «Справочник разработчика по библиотеке ядра Intel® Math — C» . программное обеспечение.intel.com . Проверено 27 ноября 2019 г.
- ^ «Переход с Intel MKL-DNN на oneDNN» . Интел . Проверено 25 июля 2024 г.