Biblioteca del núcleo matemático - Math Kernel Library

Biblioteca del núcleo matemático
Desarrollador (es) Intel
Versión inicial 9 de mayo de 2003 ; Hace 18 años ( 09/05/2003 )
Lanzamiento estable
2021.4 / 1 de octubre de 2021 ; Hace 16 dias ( 01/10/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 .com / oneapi / onemkl Edita esto en Wikidata

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

Referencias

enlaces externos