Math Kernel Library - Math Kernel Library
| Utvikler (er) | Intel |
|---|---|
| Første utgivelse | 9. mai 2003 |
| Stabil utgivelse | 2021.4 / 1. oktober 2021
|
| Skrevet inn | C / C ++ , Intel DPC ++ kompilator , Fortran |
| Operativsystem | Microsoft Windows , Linux , macOS |
| Plattform | Intel Xeon , Intel Xe , Intel Core , Intel Atom |
| Type | Bibliotek og rammeverk |
| Tillatelse | freeware under ISSL |
| Nettsted |
programvare |
Intel oneAPI Math Kernel Library , tidligere Intel Math Kernel Library ( Intel MKL ), er et bibliotek med optimaliserte matematiske rutiner for vitenskap, ingeniørfag og økonomiske applikasjoner. Kjernemattefunksjoner inkluderer BLAS , LAPACK , ScaLAPACK , sparsomme løsere, raske Fourier -transformasjoner og vektormatematikk.
Biblioteket støtter Intel -prosessorer og er tilgjengelig for Windows , Linux og macOS -operativsystemer .
Intel oneAPI Math Kernel Library er ikke forveksles med oneAPI Math Kernel Library (oneMKL) spesifikasjonen, et stykke av åpen lim kode som gjør det mulig Intel MKL rutiner som skal brukes fra data Parallel C ++.
Historie og lisensiering
Intel lanserte Math Kernel Library 9. mai 2003, og kalte det blas.lib. Prosjektets utviklingsteam er lokalisert i Russland og USA.
Biblioteket var tilgjengelig i en frittstående form, gratis i henhold til vilkårene i Intel Simplified Software License som tillater omfordeling.
Siden april 2020 har MKL blitt en del av oneAPI. Kommersiell støtte for oneMKL er tilgjengelig når den kjøpes som en del av oneAPI Base Toolkit.
Ytelse og leverandørlås
MKL og andre programmer generert av Intel C ++-kompilatoren og Intel DPC ++-kompilatoren forbedrer ytelsen med en teknikk som kalles multi-versjonering av funksjoner: en funksjon er kompilert eller skrevet for mange av x86- instruksjonssettets utvidelser, og ved kjøretid en "hovedfunksjon" "bruker CPUID -instruksjonen til å velge en versjon som er best egnet for den nåværende CPU. Så lenge hovedfunksjonen oppdager en ikke-Intel-CPU, velger den imidlertid nesten alltid den mest grunnleggende (og tregeste) funksjonen å bruke, uavhengig av hvilken instruksjon CPU-påstandene angir å støtte. Dette har gitt systemet et kallenavn på "cripple AMD" -rutinen siden 2009. Fra 2020 ble Intels MKL, som forblir det numeriske biblioteket installert som standard sammen med mange forhåndskompilerte matematiske applikasjoner på Windows (for eksempel NumPy , SymPy ). Selv om MATLAB var avhengig av MKL, implementerte en løsning som startet med Release 2020a som sikrer full støtte for AVX2 fra MKL også for ikke -Intel (AMD) CPUer
I eldre versjoner kan du sette inn den udokumenterte miljøvariabelen MKL_DEBUG_CPU_TYPE=5for å overstyre leverandørstrengavhengig kodebane og aktivere støttede instruksjoner opp til AVX2 på AMD -prosessorbaserte systemer, noe som resulterer i like eller enda bedre ytelse sammenlignet med Intel CPUer. Siden minst oppdatering 1 2020, fungerer ikke miljøvariabelen lenger.
Minst to ruter for å hekte MKLs interne rutiner for å fjerne diskriminering er oppdaget. Kroken kan legges til ved kompileringstid ved å koble til eller ved kjøretid ved injeksjon . Agner Fog oppdaget at MKL og ICC binære filer også har en skjult ikke-diskriminerende sender. En mkl_serv_intel_cpu_truefunksjon ble oppdaget i 2019. Fogs intel_dispatch_patch gir kode som kroker begge rutene. Ifølge Daniël de Kok, bare oppdatering av sistnevnte funksjon på MKL 2020 Update 1 forbedrer ytelsen for AMD Zen.
Detaljer
Funksjonelle kategorier
Intel MKL har følgende funksjonelle kategorier:
-
Lineær algebra : BLAS-rutiner er vektor-vektor (Nivå 1), matrise-vektor (Nivå 2) og matrisematrise (Nivå 3) for virkelige og komplekse enkelt- og doble presisjonsdata. LAPACK består av tunede LU-, Cholesky- og QR -faktoriseringer, egenverdi og minst kvadraters løsningsmaskiner. MKL inkluderer også Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver , PBLAS og BLACS.
- Siden MKL bruker standardgrensesnitt for BLAS og LAPACK, kan applikasjonen som bruker andre implementeringer få bedre ytelse på Intel og kompatible prosessorer ved å koble til MKL-biblioteker på nytt.
- MKL inkluderer en rekke Fast Fourier -transformasjoner (FFT) fra 1D til flerdimensjonal, kompleks til kompleks, ekte til kompleks, og ekte til ekte transformasjoner av vilkårlige lengder. Applikasjoner skrevet med FFTW med åpen kildekode kan enkelt portes til MKL ved å koble til grensesnittpakkerbiblioteker som er en del av MKL for enkel migrering.
- Klyngeversjoner av LAPACK og FFT er også tilgjengelige som en del av MKL for å dra nytte av MPI -parallellitet i tillegg til enkeltnodeparallellisme fra multithreading.
- Vektormatematiske funksjoner inkluderer beregningsmessig intensive kjernematematiske operasjoner for enkle og dobbel presisjon ekte og komplekse datatyper. Disse ligner på libm -funksjoner fra kompilatorbiblioteker, men opererer på vektorer i stedet for skalarer for å gi bedre ytelse. Det er forskjellige kontroller for å angi nøyaktighet, feilmodus og denormalisert nummerhåndtering for å tilpasse oppførselen til rutinene.
- Statistikkfunksjoner inkluderer tilfeldige tallgeneratorer og sannsynlighetsfordelinger. optimalisert for flerkjernede prosessorer. Beregningsintensive inn og ut-av-kjerne-rutiner er også inkludert for å beregne grunnleggende statistikk, estimering av avhengigheter etc.
- Datatilpasningsfunksjoner inkluderer splines (lineær, kvadratisk, kubisk, oppslag, trinnvis konstant) for 1-dimensjonal interpolasjon som kan brukes i dataanalyse, geometrisk modellering og overflate-tilnærming.
- Deep Neural Network
- Delvis differensialligninger
- Problemløsere for ikke -lineær optimalisering
Se også
- OneAPI (beregningsakselerasjon)
- Liste over numeriske biblioteker
- Automatisk innstilt lineær algebra -programvare (ATLAS)
- GotoBLAS og OpenBLAS
- Integrerte ytelsesprimitiver