Rutinas matemáticas optimizadas desarrolladas por Intel
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 sistemas operativos Windows y Linux . [5] [6] [7]
La biblioteca de kernel matemática Intel oneAPI no debe confundirse con las interfaces oneMKL, una biblioteca contenedora 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 de kernel matemático oneAPI en noviembre de 1994 y la llamó biblioteca Intel BLAS. [9] En 1996, la biblioteca pasó a llamarse biblioteca de kernel matemático Intel hasta abril de 2020, cuando Intel oneMKL pasó a formar parte de la iniciativa oneAPI para admitir múltiples arquitecturas de hardware, manteniendo el nombre actual de biblioteca de kernel matemático Intel oneAPI.
La biblioteca está disponible como parte de oneAPI Toolkits y en forma independiente, sin cargo bajo los términos de la Licencia de software simplificada de Intel [3] que permite la redistribución. [10] El soporte comercial para Intel oneMKL está disponible cuando se compra como parte de oneAPI Base Toolkit.
Tras la transición de Apple hacia las CPU x86, la última versión de Intel oneMKL disponible para macOS es la versión 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: se compila o escribe una función 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 una 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 diga admitir. Esto le ha valido al sistema el apodo de rutina "AMD lisiada" desde 2009. [11] A partir de 2020 [actualizar], MKL de Intel sigue siendo la biblioteca numérica instalada de forma predeterminada junto con muchas aplicaciones matemáticas precompiladas en Windows (como NumPy , SymPy ). [12] [13] Aunque se basa en MKL, MATLAB implementó una solución alternativa a partir de la versión 2020a que garantiza soporte total para AVX2 por parte de MKL también para CPU que no sean 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 ajustadas, 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 pequeñas dimensiones 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 al volver a vincularse con las bibliotecas MKL.
- oneMKL incluye una variedad de transformadas rápidas de Fourier (FFT) de 1D a multidimensionales, complejas a complejas, reales a complejas y reales a reales de longitudes arbitrarias. Las aplicaciones escritas con la FFTW de código abierto se pueden trasladar fácilmente a MKL mediante la vinculación con bibliotecas de interfaz que se proporcionan como parte de MKL para una migración sencilla.
- Las versiones de clúster de LAPACK y FFT también están disponibles como parte de MKL para aprovechar el paralelismo MPI además del paralelismo de nodo único del subprocesamiento múltiple.
- Las funciones matemáticas vectoriales incluyen operaciones matemáticas básicas de gran intensidad computacional para tipos de datos reales y complejos de precisión simple y doble. Son similares a las funciones libm de las bibliotecas de compiladores, pero operan en vectores en lugar de escalares para brindar un mejor rendimiento. Existen varios controles para configurar la precisión, el modo de error y el manejo de números desnormalizados para 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 cálculo intensivo dentro y fuera del núcleo para calcular estadísticas básicas, estimación de dependencias, etc.
- Las funciones de ajuste de datos incluyen splines (lineales, cuadráticos, cúbicos, de búsqueda, constantes escalonadas) 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
Referencias
- ^ "Notas de la versión y nuevas características de la biblioteca Intel® Math Kernel". software.intel.com .
- ^ Biblioteca de núcleo matemático Intel® oneAPI (oneMKL) | Software Intel®
- ^ ab "Licencia de software simplificada de Intel".
- ^ "OneMKL — documentación de la especificación oneAPI 1.1-rev-1".
- ^ ab "Biblioteca del kernel matemático Intel".
- ^ ab "Biblioteca del kernel matemático Intel (MKL)".
- ^ "MKL - Biblioteca Intel Math Kernel". 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++) de acuerdo con la especificación oneMKL. Funciona con varios dispositivos (backends) utilizando bibliotecas específicas del dispositivo subyacentes.
- ^ "Biblioteca Intel Math Kernel, 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".
- ^ Niebla Agner . "Blog de CPU de Agner: función" AMD paralizada "de Intel".
- ^ "Cadena de comentarios en: r/matlab - Cómo obligar a Matlab a utilizar una ruta de código rápida en las CPU AMD Ryzen/TR: hasta un 250 % de aumento 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á paralizado: Matlab ahora funciona en CPU AMD a toda velocidad - ExtremeTech" www.extremetech.com . Consultado el 29 de octubre de 2020 .
- ^ admin (14 de noviembre de 2019). "Referencia para desarrolladores de Intel® Math Kernel Library - C". software.intel.com . Consultado el 27 de noviembre de 2019 .
- ^ "Transición de Intel MKL-DNN a oneDNN". Intel . Consultado el 25 de julio de 2024 .
Enlaces externos
- Sitio web oficial
- Documentación
- Foro de usuarios de oneMKL
- Especificación oneAPI oneMKL
- Conjunto de pruebas de rendimiento oneMKL