Math Kernel Library - Math Kernel Library
| Udvikler (er) | Intel |
|---|---|
| Første udgivelse | 9. maj 2003 |
| Stabil udgivelse | 2021.4 / 1. oktober 2021
|
| Skrevet i | C / C ++ , Intel DPC ++ Compiler , Fortran |
| Operativ system | Microsoft Windows , Linux , macOS |
| Platform | Intel Xeon , Intel Xe , Intel Core , Intel Atom |
| Type | Bibliotek og rammer |
| Licens | freeware under ISSL |
| Internet side |
software |
Intel oneAPI Math Kernel Library , tidligere Intel Math Kernel Library ( Intel MKL ), er et bibliotek med optimerede matematiske rutiner til videnskab, teknik og finansielle applikationer. Kernematematikfunktioner inkluderer BLAS , LAPACK , ScaLAPACK , sparsomme opløsere , hurtige Fourier -transformationer og vektormatematik.
Biblioteket understøtter Intel -processorer og er tilgængeligt til Windows- , Linux- og macOS -operativsystemer .
Intel oneAPI Math Kernel Bibliotek er ikke at forveksle med oneAPI Math Kernel Bibliotek (oneMKL) specifikation, et stykke open source lim kode , der tillader Intel MKL rutiner, der skal anvendes fra data Parallel C ++.
Historie og licens
Intel lancerede Math Kernel Library den 9. maj 2003 og kaldte det blas.lib. Projektets udviklingsteam er placeret i Rusland og USA.
Biblioteket var tilgængeligt i en selvstændig form, gratis under betingelserne i Intel Simplified Software License, som tillader omfordeling.
Siden april 2020 er MKL blevet en del af oneAPI. Kommerciel support til oneMKL er tilgængelig, når den købes som en del af oneAPI Base Toolkit.
Ydeevne og leverandør lock-in
MKL og andre programmer, der er genereret af Intel C ++-kompilatoren og Intel DPC ++-kompilatoren, forbedrer ydeevnen med en teknik, der kaldes funktion multi-versioning: en funktion kompileres eller skrives til mange af x86- instruktionssættets udvidelser og i løbetid en "master-funktion "bruger CPUID -instruktionen til at vælge en version, der er bedst egnet til den aktuelle CPU. Men så længe masterfunktionen registrerer en ikke-Intel-CPU, vælger den næsten altid den mest grundlæggende (og langsommeste) funktion, der skal bruges, uanset hvilken instruktion CPU'erne hævder at understøtte. Dette har givet systemet et kaldenavn for "lamme AMD" -rutiner siden 2009. Fra 2020 har Intels MKL, der forbliver det numeriske bibliotek installeret som standard sammen med mange forudkompilerede matematiske applikationer på Windows (f.eks. NumPy , SymPy ). Selvom MATLAB var afhængig af MKL, implementerede en løsning, der startede med Release 2020a, hvilket sikrer fuld understøttelse af AVX2 fra MKL også for ikke -Intel (AMD) CPU'er
I ældre versioner kan indstilling af den udokumenterede miljøvariabel MKL_DEBUG_CPU_TYPE=5bruges til at tilsidesætte leverandørstrengafhængig kodevejsvalg og aktivere understøttede instruktioner op til AVX2 på AMD -processorbaserede systemer, hvilket resulterer i lige eller endnu bedre ydeevne i forhold til Intel CPU'er. Siden mindst opdatering 1 2020 fungerer miljøvariablen ikke længere.
Mindst to ruter til tilslutning af MKL's interne rutiner for at fjerne diskrimineringen er blevet opdaget. Krogen kan tilføjes ved kompileringstidspunktet ved at linke eller ved løbetid ved injektion . Agner Fog opdagede, at MKL- og ICC-binarier også har en skjult ikke-diskriminerende afsender. En mkl_serv_intel_cpu_truefunktion blev opdaget i 2019. Fogs intel_dispatch_patch giver kode, der tilslutter begge ruter. Ifølge Daniël de Kok forbedrer bare opdateringen af sidstnævnte funktion på MKL 2020 Update 1 ydeevnen for AMD Zen.
detaljer
Funktionelle kategorier
Intel MKL har følgende funktionelle kategorier:
-
Lineær algebra : BLAS-rutiner er vektor-vektor (niveau 1), matrix-vektor (niveau 2) og matrixmatrix (niveau 3) for reelle og komplekse enkelt- og dobbeltpræcisionsdata. LAPACK består af tunede LU, Cholesky og QR faktoriseringer, egenværdi og mindste kvadrater. MKL inkluderer også Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver , PBLAS og BLACS.
- Da MKL bruger standardgrænseflader til BLAS og LAPACK, kan applikationen, der bruger andre implementeringer, få bedre ydeevne på Intel og kompatible processorer ved at genforbinde til MKL-biblioteker.
- MKL indeholder en række hurtige Fourier -transformationer (FFT'er) fra 1D til multidimensionale, komplekse til komplekse, reelle til komplekse og reelle til reelle transformationer af vilkårlige længder. Applikationer, der er skrevet med open source FFTW, kan let portes til MKL ved at linke til grænsefladeindpakningsbiblioteker, der leveres som en del af MKL, for nem migration.
- Klyngeversioner af LAPACK og FFT'er er også tilgængelige som en del af MKL for at drage fordel af MPI -parallelisme ud over single node -parallelisme fra multithreading.
- Vektormatematikfunktioner omfatter beregningsmæssigt intensive matematiske kerneoperationer til virkelige og komplekse datatyper med enkelt og dobbelt præcision. Disse ligner libm -funktioner fra kompilatorbiblioteker, men fungerer på vektorer frem for skalarer for at give bedre ydeevne. Der er forskellige kontroller til indstilling af nøjagtighed, fejltilstand og denormaliseret nummerhåndtering for at tilpasse rutinernes adfærd.
- Statistikfunktioner omfatter tilfældige talgeneratorer og sandsynlighedsfordelinger. optimeret til multicore processorer. Der medfølger også computerintensive ind- og ud-af-kernerutiner til beregning af grundlæggende statistikker, estimering af afhængigheder osv.
- Datatilpasningsfunktioner omfatter splines (lineær, kvadratisk, kubisk, opslag, trinvis konstant) til 1-dimensionel interpolation, der kan bruges i dataanalyse, geometrisk modellering og overfladetilnærmelse applikationer.
- Deep Neural Network
- Partielle differentialligninger
- Problemløsere med ikke -lineær optimering
Se også
- OneAPI (beregningsacceleration)
- Liste over numeriske biblioteker
- Automatisk indstillet lineær algebra -software (ATLAS)
- GotoBLAS og OpenBLAS
- Integrerede præstationer