Biblioteca Kernel Math Math Kernel Library
| Dezvoltatori | Intel |
|---|---|
| Eliberarea inițială | 9 mai 2003 |
| Versiune stabila | 2021.4 / 1 octombrie 2021
|
| Scris in | C / C ++ , Compilator Intel DPC ++ , Fortran |
| Sistem de operare | Microsoft Windows , Linux , macOS |
| Platformă | Intel Xeon , Intel Xe , Intel Core , Intel Atom |
| Tip | Biblioteca și cadrul |
| Licență | freeware sub ISSL |
| Site-ul web |
software |
Biblioteca Intel oneAPI Math Kernel , fostă Intel Math Kernel Library ( Intel MKL ), este o bibliotecă de rutine matematice optimizate pentru științe, inginerie și aplicații financiare. Funcțiile matematice de bază includ BLAS , LAPACK , ScaLAPACK , rezolvatori rari , transformate Fourier rapide și matematică vectorială.
Biblioteca suportă procesoarele Intel și este disponibil pentru pentru Windows , Linux și MacOS sistemele de operare .
Biblioteca Intel oneAPI Math Kernel nu trebuie confundată cu specificația oneAPI Math Kernel Library (oneMKL), o bucată de cod de lipire open-source care permite rutinelor Intel MKL să fie utilizate din Data Parallel C ++.
Istorie și licențiere
Intel a lansat Biblioteca Kernel Math pe 9 mai 2003 și a numit-o blas.lib. Echipele de dezvoltare ale proiectului sunt situate în Rusia și Statele Unite.
Biblioteca a fost disponibilă într-o formă independentă, gratuit în condițiile licenței de software Intel Simplified care permit redistribuirea.
Din aprilie 2020, MKL a devenit parte a oneAPI. Suportul comercial pentru oneMKL este disponibil atunci când este achiziționat ca parte a oneAPI Base Toolkit.
Performanță și blocarea furnizorului
MKL și alte programe generate de compilatorul Intel C ++ și compilatorul Intel DPC ++ îmbunătățesc performanța cu o tehnică numită funcție multi-versionare: o funcție este compilată sau scrisă pentru multe dintre extensiile setului de instrucțiuni x86 , iar în timpul rulării o „funcție master” "folosește instrucțiunea CPUID pentru a selecta versiunea cea mai potrivită pentru procesorul curent. Cu toate acestea, atâta timp cât funcția master detectează un procesor non-Intel, acesta alege aproape întotdeauna cea mai de bază (și cea mai lentă) funcție de utilizat, indiferent de instrucțiunile pe care CPU le susține. Acest lucru a făcut ca sistemul să fie supranumit rutina „infirmă AMD” din 2009. Începând din 2020, MKL-ul Intel, care rămâne biblioteca numerică instalată implicit împreună cu multe aplicații matematice precompilate pe Windows (cum ar fi NumPy , SymPy ). Deși se bazează pe MKL, MATLAB a implementat o soluție începând cu lansarea 2020a, care asigură suport complet pentru AVX2 de către MKL, de asemenea, pentru procesoare non-Intel (AMD)
În versiunile mai vechi, setarea variabilei de mediu nedocumentate MKL_DEBUG_CPU_TYPE=5ar putea fi utilizată pentru a suprascrie alegerea codepath dependentă de șirul furnizorului și pentru a activa instrucțiunile acceptate până la AVX2 pe sistemele bazate pe procesor AMD, rezultând o performanță egală sau chiar mai bună în comparație cu procesoarele Intel. Din cel puțin Actualizarea 1 2020, variabila de mediu nu mai funcționează.
Au fost descoperite cel puțin două căi pentru conectarea rutinelor interne ale MKL pentru a elimina discriminarea. Cârligul poate fi adăugat la timp de compilare prin legare sau la rulare prin injecție . Agner Fog a descoperit că binarele MKL și ICC au, de asemenea, un dispecer nediscriminator ascuns. O mkl_serv_intel_cpu_truefuncție a fost descoperită în 2019. Intel_dispatch_patch al Fog oferă cod care leagă ambele rute. Potrivit lui Daniël de Kok, doar aplicarea acestei ultime funcții la MKL 2020 Update 1 îmbunătățește performanța pentru AMD Zen.
Detalii
Categorii funcționale
Intel MKL are următoarele categorii funcționale:
-
Algebră liniară : rutinele BLAS sunt operații vector-vector (nivel 1), matrice-vector (nivel 2) și matrice matricială (nivel 3) pentru date reale și complexe de precizie simplă și dublă. LAPACK constă din factorizări LU, Cholesky și QR reglate, valori proprii și rezolvători de cel mai mic pătrat. MKL include, de asemenea, Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver , PBLAS și BLACS.
- Deoarece MKL utilizează interfețe standard pentru BLAS și LAPACK, aplicația care folosește alte implementări poate obține performanțe mai bune pe procesoare Intel și compatibile prin re-conectarea cu bibliotecile MKL.
- MKL include o varietate de transformate rapide Fourier (FFT) de la 1D la multidimensional, complex la complex, real la complex și real la transformate reale de lungimi arbitrare. Aplicațiile scrise cu FFTW open source pot fi portate cu ușurință în MKL prin conectarea cu bibliotecile de împachetare a interfeței furnizate ca parte a MKL pentru o migrare ușoară.
- Versiunile cluster ale LAPACK și FFT sunt, de asemenea, disponibile ca parte a MKL pentru a profita de paralelismul MPI, în plus față de paralelismul cu un singur nod din multithreading.
- Funcțiile matematice vectoriale includ operații matematice de bază intensive din punct de vedere al calculului pentru tipuri de date reale și complexe de precizie simplă și dublă. Acestea sunt similare funcțiilor libm din bibliotecile de compilare, dar operează pe vectori mai degrabă decât pe scalari pentru a oferi o performanță mai bună. Există diferite controale pentru setarea preciziei, a modului de eroare și a manipulării numerelor denormalizate pentru a personaliza comportamentul rutinelor.
- Funcțiile statistice includ generatoare de numere aleatorii și distribuții de probabilitate. optimizat pentru procesoare multicore. De asemenea, sunt incluse rutine cu calcul intensiv și în afara nucleului pentru a calcula statistici de bază, estimarea dependențelor etc.
- Funcțiile de adaptare a datelor includ spline (liniare, pătratice, cubice, de căutare, constantă în trepte) pentru interpolare unidimensională care poate fi utilizată în analiza datelor, modelare geometrică și aplicații de aproximare a suprafeței.
- Rețea neuronală profundă
- Ecuații diferențiale parțiale
- Rezolvatori de probleme de optimizare neliniară
Vezi si
- OneAPI (accelerare de calcul)
- Lista bibliotecilor numerice
- Software de algebră liniară (ATLAS) reglat automat
- GotoBLAS și OpenBLAS
- Primitive de performanță integrate