La biblioteca Intel oneAPI Math Kernel Library (Intel oneMKL ), anteriormente conocida como Intel Math Kernel Library, es una biblioteca de rutinas matemáticas optimizadas para aplicaciones científicas, de ingeniería y financieras. Las funciones matemáticas principales incluyen BLAS , LAPACK , ScaLAPACK , solucionadores dispersos, transformadas rápidas de Fourier y matemáticas vectoriales. [ 5 ] [ 6 ]
La biblioteca admite CPU x86 y GPU Intel [ 2 ] y está disponible para los sistemas operativos Windows y Linux . [ 5 ] [ 6 ] [ 7 ]
La biblioteca Intel oneAPI Math Kernel Library no debe confundirse con la biblioteca oneAPI Math Library (oneMath) , anteriormente conocida como interfaces oneMKL, que es una biblioteca de envoltura de código abierto que permite a las aplicaciones DPC++ llamar a rutinas oneMKL que pueden descargarse a múltiples arquitecturas de hardware y proveedores definidos durante el tiempo de ejecución. [ 8 ]
Historia y licencias
Intel lanzó la biblioteca oneAPI Math Kernel Library en noviembre de 1994 y la llamó Intel BLAS Library. [ 9 ] En 1996, la biblioteca pasó a llamarse Intel Math Kernel Library hasta abril de 2020, cuando intel oneMKL se convirtió en parte de la iniciativa oneAPI para admitir múltiples arquitecturas de hardware, manteniendo el nombre actual Intel oneAPI Math Kernel Library.
La biblioteca está disponible como parte de los kits de herramientas oneAPI y de forma independiente, sin cargo alguno bajo los términos de la Licencia de Software Simplificada de Intel [ 3 ] , que permite su redistribución. [ 10 ] El soporte comercial para Intel oneMKL está disponible al adquirirlo como parte del kit de herramientas base oneAPI .
Tras la transición de Apple para abandonar las CPU x86, la última versión de Intel oneMKL disponible para macOS es la 2023.2.2, y está previsto que se elimine a finales de 2024.
Rendimiento y dependencia del proveedor
MKL y otros programas generados por el compilador Intel C++ y el compilador Intel DPC++ mejoran el rendimiento con una técnica llamada multiversión de funciones: una función se compila o escribe para muchas de las extensiones del conjunto de instrucciones x86 , y en tiempo de ejecución una "función maestra" utiliza la instrucción CPUID para seleccionar la versión más apropiada para la CPU actual. Sin embargo, siempre que la función maestra detecte una CPU que no sea Intel, casi siempre elige la función más básica (y más lenta) para usar, independientemente de los conjuntos de instrucciones que la CPU afirme admitir. Esto le ha valido al sistema el apodo de rutina "AMD paralizante" desde 2009. [ 11 ] A partir de 2020La biblioteca MKL de Intel sigue siendo la biblioteca numérica instalada por defecto junto con muchas aplicaciones matemáticas precompiladas en Windows (como NumPy y SymPy ). [ 12 ] [ 13 ] Aunque se basa en MKL, MATLAB implementó una solución alternativa a partir de la versión 2020a que garantiza la compatibilidad total con AVX2 por parte de MKL también para CPU que no son de Intel (AMD). [ 14 ]
Detalles
Categorías funcionales
Intel oneMKL tiene las siguientes categorías funcionales: [ 15 ]
- Álgebra lineal : Las rutinas BLAS son operaciones vector-vector (Nivel 1), matriz-vector (Nivel 2) y matriz-matriz (Nivel 3) para datos reales y complejos de precisión simple y doble. LAPACK consta de factorizaciones LU, Cholesky y QR optimizadas, solucionadores de valores propios y mínimos cuadrados. MKL también incluye Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver (FEAST, PARDISO), PBLAS y BLACS. MKL es incluso mejor en dimensiones pequeñas que libxsmm .
- Dado que oneMKL utiliza interfaces estándar para BLAS y LAPACK, la aplicación que utiliza otras implementaciones puede obtener un mejor rendimiento en procesadores Intel y compatibles mediante la vinculación con las bibliotecas MKL.
- oneMKL incluye una variedad de transformadas rápidas de Fourier (FFT) de una a múltiples dimensiones, de complejas a complejas, de reales a complejas y de reales a reales, con longitudes arbitrarias. Las aplicaciones escritas con la biblioteca de código abierto FFTW se pueden portar fácilmente a MKL mediante la vinculación con las bibliotecas de interfaz proporcionadas como parte de MKL para facilitar la migración.
- También están disponibles versiones en clúster de LAPACK y FFT como parte de MKL para aprovechar el paralelismo MPI, además del paralelismo de nodo único que ofrece el procesamiento multihilo.
- Las funciones matemáticas vectoriales incluyen operaciones matemáticas básicas de alto consumo computacional para tipos de datos reales y complejos de precisión simple y doble. Son similares a las funciones libm de las bibliotecas del compilador, pero operan con vectores en lugar de escalares para ofrecer un mejor rendimiento. Existen diversos controles para configurar la precisión, el modo de error y el manejo de números desnormalizados, lo que permite personalizar el comportamiento de las rutinas.
- Las funciones estadísticas incluyen generadores de números aleatorios y distribuciones de probabilidad, optimizadas para procesadores multinúcleo. También se incluyen rutinas de procesamiento intensivo, tanto dentro como fuera de la memoria principal, para calcular estadísticas básicas, estimar dependencias, etc.
- Las funciones de ajuste de datos incluyen splines (lineales, cuadráticas, cúbicas, de búsqueda, de paso constante) para interpolación unidimensional que se pueden utilizar en análisis de datos, modelado geométrico y aplicaciones de aproximación de superficies.
- Ecuaciones diferenciales parciales
- Solucionadores de problemas de optimización no lineal
En el pasado, oneMKL incluía funciones de redes neuronales profundas , pero se eliminaron en la versión 2020 como un derivado que originó la biblioteca de redes neuronales profundas Intel oneAPI de código abierto. [ 16 ]
Véase también
- OneAPI (aceleración de cómputo)
- Lista de bibliotecas numéricas
- Software de álgebra lineal con ajuste automático (ATLAS)
- GotoBLAS y OpenBLAS
- Primitivas de rendimiento integrado
- Biblioteca de primitivas criptográficas de Intel
- Colección de bibliotecas numéricas – de NEC para su procesador vectorial
Referencias
- ↑ "Notas de la versión y nuevas características de la biblioteca Intel® Math Kernel" . software.intel.com .
- 1 2 Biblioteca del núcleo matemático Intel® oneAPI (oneMKL) | Software Intel®
- 1 2 "Licencia de software simplificada de Intel" .
- ↑ "Documentación de la especificación OneMKL — oneAPI 1.1-rev-1" .
- 1 2 "Biblioteca Intel Math Kernel" .
- 1 2 "Biblioteca Intel Math Kernel (MKL)" .
- ↑ "MKL - Biblioteca de núcleos matemáticos de Intel" . 23 de abril de 2012.
- ↑ "oneapi-src/oneMKL" . oneAPI-SRC. 19 de marzo de 2021.
Las interfaces oneMKL son una implementación de código abierto de la interfaz oneMKL Data Parallel C++ (DPC++) según la especificación oneMKL. Funciona con múltiples dispositivos (backends) utilizando bibliotecas específicas para cada dispositivo.
- ↑ "Intel Math Kernel Library, Manual de referencia, Información de la versión" (PDF) . c. 2004. p. ii . Consultado el 25 de julio de 2024 .
- ↑ "Preguntas frecuentes sobre licencias de la biblioteca Intel Math Kernel" .
- ↑ Agner Fog . "Blog de Agner sobre CPU: la función de Intel para "perjudicar a AMD"" . Archivado del original el 18 de abril de 2025.
- ↑ "Cadena de comentarios en: r/matlab - Cómo forzar a Matlab a usar una ruta de código rápida en CPU AMD Ryzen/TR - hasta un 250 % de mejora del rendimiento" . reddit . 31 de marzo de 2020. Consultado el 6 de junio de 2020 .
- ↑ "Centro de Computación de Alto Rendimiento de Stuttgart - Base de Conocimientos - Bibliotecas (Hawk)" . Consultado el 6 de junio de 2020 .
- ↑ "Ya no está limitado: Matlab ahora funciona a máxima velocidad en procesadores AMD - ExtremeTech" . www.extremetech.com . 31 de marzo de 2020. Consultado el 29 de octubre de 2020 .
- ↑ admin (14/11/2019). "Referencia para desarrolladores de la biblioteca Intel® Math Kernel - C" . software.intel.com . Consultado el 27/11/2019 .
- ↑ "Transición de Intel MKL-DNN a oneDNN" . Intel . Consultado el 25 de julio de 2024 .
Enlaces externos
- Software de 2003
- Bibliotecas numéricas de C++
- Software de Intel
- Software numérico