Biblioteca del núcleo matemático - Math Kernel Library
| Desarrollador (es) | Intel |
|---|---|
| Versión inicial | 9 de mayo de 2003 |
| Lanzamiento estable | 2021.4 / 1 de octubre de 2021
|
| Escrito en | C / C ++ , compilador Intel DPC ++ , Fortran |
| Sistema operativo | Microsoft Windows , Linux , macOS |
| Plataforma | Intel Xeon , Intel Xe , Intel Core , Intel Atom |
| Escribe | Biblioteca y marco |
| Licencia | freeware bajo ISSL |
| Sitio web |
software |
Intel oneAPI Math Kernel Library , anteriormente 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.
La biblioteca es compatible con procesadores Intel y está disponible para los sistemas operativos Windows , Linux y macOS .
Intel oneAPI Math Kernel Library no debe confundirse con la especificación 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 ++.
Historia y licencias
Intel lanzó Math Kernel Library el 9 de mayo de 2003 y lo llamó blas.lib. 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, que permite la redistribución.
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 dado al sistema un apodo de rutina "lisiado AMD" desde 2009. A partir de 2020, 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 ). 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).
En versiones anteriores, la configuración de la variable de entorno no documentada MKL_DEBUG_CPU_TYPE=5podrí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. Desde al menos la Actualización 1 2020, la variable de entorno ya no funciona.
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_truedescubrió una función en 2019. El intel_dispatch_patch de Fog proporciona un código que conecta ambas rutas. Según Daniël de Kok, solo parchear la última función en MKL 2020 Update 1 mejora el rendimiento de AMD Zen.
Detalles
Categorías funcionales
Intel MKL tiene las siguientes categorías funcionales:
-
Á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 usa interfaces estándar para BLAS y LAPACK, la aplicación que usa otras implementaciones puede obtener un mejor rendimiento en Intel y procesadores compatibles al volver a vincular con 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 multiproceso.
- 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
- OneAPI (aceleración de cálculo)
- Lista de bibliotecas numéricas
- Software de álgebra lineal sintonizado automáticamente (ATLAS)
- GotoBLAS y OpenBLAS
- Primitivas de rendimiento integradas