Biblioteca Kernel Math Math Kernel Library

Biblioteca Kernel Math
Dezvoltatori Intel
Eliberarea inițială 9 mai 2003 ; Acum 18 ani ( 09.05.2003 )
Versiune stabila
2021.4 / 1 octombrie 2021 ; Acum 16 zile ( 01.01.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 .intel .com / oneapi / onemkl Editați acest lucru pe Wikidata

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

Referințe

linkuri externe