Intel oneAPI Math Kernel Library , anteriormente solo Intel Math Kernel Library ( Intel MKL ), es una biblioteca de rutinas matemáticas optimizadas para aplicaciones científicas, de ingeniería y financieras. Las funciones matemáticas básicas incluyen BLAS , LAPACK , ScaLAPACK , solucionadores dispersos, transformadas rápidas de Fourier y matemáticas vectoriales. [4] [5]
Desarrollador (es) | Intel |
---|---|
Versión inicial | 9 de mayo de 2003 |
Lanzamiento estable | 2021.1 / 8 de diciembre de 2020 [1] |
Escrito en | C / C ++ , compilador Intel DPC ++ , Fortran |
Sistema operativo | Microsoft Windows , Linux , macOS |
Plataforma | Intel Xeon , Intel Xe , Intel Core , Intel Atom , Intel Xeon Phi [2] |
Tipo | Biblioteca y marco |
Licencia | freeware bajo ISSL [3] |
Sitio web | software |
La biblioteca es compatible con procesadores Intel [2] y está disponible para los sistemas operativos Windows , Linux y macOS . [4] [5] [6]
Intel oneAPI Math Kernel Library no debe confundirse con oneAPI Math Kernel Library (oneMKL), una pieza de código de pegamento de código abierto que permite que las rutinas Intel MKL se utilicen desde Data Parallel C ++. [7]
Historia y licencias
Intel lanzó Math Kernel Library el 9 de mayo de 2003 y lo llamó blas.lib. [8] Los equipos de desarrollo del proyecto están ubicados en Rusia y Estados Unidos.
La biblioteca estaba disponible en forma independiente, sin cargo bajo los términos de la licencia de software simplificado de Intel [3], que permite la redistribución. [9]
Desde abril de 2020, MKL se ha convertido en parte de oneAPI. El soporte comercial para oneMKL está disponible cuando se compra como parte de oneAPI Base Toolkit.
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 función de múltiples versiones: 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 de 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 otorgado al sistema el sobrenombre de rutina "lisiado AMD" desde 2009. [10] A partir de 2020[actualizar], MKL de Intel, que sigue siendo la biblioteca numérica instalada por defecto junto con muchas aplicaciones matemáticas precompiladas en Windows (como NumPy , SymPy ). [11] [12] Aunque se basó en MKL, MATLAB implementó una solución alternativa a partir de la versión 2020a que garantiza el soporte completo para AVX2 por parte de MKL también para CPU que no son Intel (AMD) [13]
En versiones anteriores, la configuración de la variable de entorno no documentada MKL_DEBUG_CPU_TYPE=5
podría usarse para anular la elección de la ruta de código dependiente de la cadena del proveedor y activar instrucciones compatibles hasta AVX2 en sistemas basados en procesadores AMD, lo que da como resultado un rendimiento igual o incluso mejor en comparación con las CPU Intel. [14] [15] [16] Desde al menos la Actualización 1 2020, la variable de entorno ya no funciona. [11] [12]
Se han descubierto al menos dos rutas para conectar las rutinas internas del MKL para eliminar la discriminación. El gancho se puede agregar en tiempo de compilación mediante la vinculación o en tiempo de ejecución mediante inyección . Agner Fog descubrió que los binarios MKL e ICC también tienen un despachador no discriminatorio oculto. Se mkl_serv_intel_cpu_true
descubrió una función en 2019. El intel_dispatch_patch de Fog proporciona un código que enlaza ambas rutas. [17] Según Daniël de Kok, solo parchear la última función en MKL 2020 Update 1 mejora el rendimiento de AMD Zen. [18]
Detalles
Categorías funcionales
Intel MKL tiene las siguientes categorías funcionales: [19]
- Álgebra lineal : las rutinas BLAS son operaciones de vector-vector (Nivel 1), matriz-vector (Nivel 2) y matriz de matriz (Nivel 3) para datos reales y complejos de precisión simple y doble. LAPACK consta de factorizaciones ajustadas de LU, Cholesky y QR, solucionadores de valores propios y mínimos cuadrados. MKL también incluye Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver , PBLAS y BLACS.
- Dado que MKL 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 si se vuelve a vincular con las bibliotecas MKL.
- MKL incluye una variedad de transformadas rápidas de Fourier (FFT) de 1D a multidimensional, de complejo a complejo, de real a complejo y de real a real de longitudes arbitrarias. Las aplicaciones escritas con el FFTW de código abierto se pueden migrar fácilmente a MKL mediante la vinculación con las bibliotecas de envoltura de interfaz que se proporcionan como parte de MKL para facilitar la migración.
- 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 un solo nodo de subprocesos múltiples.
- Las funciones matemáticas vectoriales incluyen operaciones matemáticas básicas computacionalmente intensivas para tipos de datos complejos y reales 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 proporcionar un mejor rendimiento. Hay 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. optimizado para procesadores multinúcleo. También se incluyen rutinas de procesamiento 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 por pasos) para la interpolación unidimensional que se pueden utilizar en aplicaciones de análisis de datos, modelado geométrico y aproximación de superficies.
- Red neuronal profunda
- Ecuaciones diferenciales parciales
- Solucionadores de problemas de optimización no lineal
Ver también
- Lista de bibliotecas numéricas
- Software de álgebra lineal sintonizado automáticamente (ATLAS)
- GotoBLAS y OpenBLAS
- Primitivas de rendimiento integradas
Referencias
- ^ "Notas de la versión y nuevas características de la biblioteca Intel® Math Kernel Library" . software.intel.com .
- ^ a b Biblioteca del núcleo matemático Intel® oneAPI (oneMKL) | Software Intel®
- ^ a b "Licencia de software simplificada de Intel" .
- ^ a b "Biblioteca del núcleo matemático de Intel" .
- ^ a b "Biblioteca del núcleo matemático de Intel (MKL)" .
- ^ "MKL - Biblioteca del núcleo matemático de Intel" .
- ^ "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 debajo.
- ^ "Intel lanza herramienta de biblioteca para desarrolladores. (Intel Math Kernel Library 6.0) (Breve artículo)" . Telecomworldwire . 9 de mayo de 2003 . Consultado el 29 de noviembre de 2009 .
- ^ "Preguntas frecuentes sobre licencias de la biblioteca del núcleo matemático de Intel" .
- ^ Agner Fog . "Blog de CPU de Agner: función" lisiada de AMD "de Intel .
- ^ a b "Cadena de comentarios en: r / matlab - Cómo forzar a Matlab a utilizar una ruta de código rápida en las CPU AMD Ryzen / TR - hasta un 250% de aumento de rendimiento" . reddit . Consultado el 6 de junio de 2020 .
- ^ a b "Centro de computación de alto rendimiento de Stuttgart - Base de conocimientos - Bibliotecas (Hawk)" . Consultado el 6 de junio de 2020 .
- ^ "Ya no está lisiado: Matlab ahora se ejecuta en CPU AMD a máxima velocidad - ExtremeTech" . www.extremetech.com . Consultado el 29 de octubre de 2020 .
- ^ "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 de rendimiento" . reddit . Consultado el 27 de noviembre de 2019 .
- ^ Sherbaz (2019-11-06), GitHub - SherbazHashmi / HackathonServer: Hackathon Python Server con ArcGIS Integration , consultado el 2019-11-27
- ^ "MKL tiene un mal rendimiento en una CPU AMD" . Mingru Yang .
- ^ https://www.agner.org/forum/viewtopic.php?t=6
- ^ de Kok, Daniël. "Intel MKL en AMD Zen" . danieldk.eu .
- ^ admin (14/11/2019). "Referencia del desarrollador para la biblioteca Intel® Math Kernel - C" . software.intel.com . Consultado el 27 de noviembre de 2019 .
enlaces externos
- Página web oficial
- Documentación
- Foro de usuarios de MKL