Knihovna matematických jader - Math Kernel Library

Knihovna matematických jader
Vývojáři Intel
První vydání 9. května 2003 ; Před 18 lety ( 2003-05-09 )
Stabilní uvolnění
2021.4 / 1. října 2021 ; Před 16 dny ( 2021-10-01 )
Napsáno C / C ++ , překladač Intel DPC ++ , Fortran
Operační systém Microsoft Windows , Linux , macOS
Plošina Intel Xeon , Intel Xe , Intel Core , Intel Atom
Typ Knihovna a rámec
Licence freeware pod ISSL
webová stránka software .intel .com /oneapi /onemkl Upravte to na Wikidata

Intel oneAPI Math Kernel Library , dříve Intel Math Kernel Library ( Intel MKL ), je knihovna optimalizovaných matematických rutin pro vědu, inženýrství a finanční aplikace. Mezi základní matematické funkce patří BLAS , LAPACK , ScaLAPACK , řídké řešiče, rychlé Fourierovy transformace a vektorová matematika.

Knihovna podporuje procesory Intel a je k dispozici pro operační systémy Windows , Linux a macOS .

Knihovnu Math Kernel Intel OneAPI nelze zaměňovat se specifikací oneAPI Math Kernel Library (oneMKL), což je kus kódu lepidla s otevřeným zdrojovým kódem, který umožňuje použití rutin Intel MKL z Data Parallel C ++.

Historie a licencování

Intel spustil knihovnu Math Kernel 9. května 2003 a nazval ji blas.lib. Týmy vývojářů projektu se nacházejí v Rusku a ve Spojených státech.

Knihovna byla k dispozici v samostatné formě, bezplatně podle podmínek licence Intel Simplified Software License, která umožňuje redistribuci.

Od dubna 2020 se MKL stala součástí oneAPI. Komerční podpora pro oneMKL je k dispozici při nákupu jako součást oneAPI Base Toolkit.

Výkon a uzamčení dodavatele

MKL a další programy generované kompilátorem Intel C ++ a kompilátorem Intel DPC ++ zlepšují výkon technikou zvanou funkce multi-versioning: funkce je kompilována nebo napsána pro mnoho rozšíření sady instrukcí x86 a za běhu „hlavní funkce“ "používá instrukci CPUID k výběru verze, která je pro aktuální CPU nejvhodnější." Dokud však hlavní funkce detekuje CPU jiného výrobce než Intel, téměř vždy zvolí nejzákladnější (a nejpomalejší) funkci, kterou má použít, bez ohledu na to, jaké instrukce nastaví deklarace CPU, které podporuje. Díky tomu má systém od roku 2009 přezdívku „ochromující AMD“ . Od roku 2020 Intel MKL, který ve výchozím nastavení zůstává nainstalovanou numerickou knihovnou spolu s mnoha předkompilovanými matematickými aplikacemi ve Windows (například NumPy , SymPy ). Přestože se MATLAB spoléhá na MKL, implementoval řešení počínaje verzí 2020a, která zajišťuje plnou podporu pro AVX2 MKL i pro CPU jiné než Intel (AMD)

Ve starších verzích bylo možné pomocí nastavení neproměnné proměnné prostředí MKL_DEBUG_CPU_TYPE=5přepsat volbu kódové cesty závislé na řetězci dodavatele a aktivovat podporované pokyny až do formátu AVX2 v systémech založených na procesorech AMD, což má za následek stejný nebo dokonce lepší výkon ve srovnání s procesory Intel. Od verze Update 1 2020 již proměnná prostředí nefunguje.

Nejméně dvě cesty za hákování interní rutiny v MKL je odstranit diskriminaci, které byly objeveny. Háček lze přidat v době kompilace propojením nebo za běhu injekcí . Agner Fog zjistil, že binární soubory MKL a ICC mají také skrytého nediskriminačního dispečera. V roce mkl_serv_intel_cpu_true2019 byla objevena funkce. Fog's intel_dispatch_patch poskytuje kód, který spojuje obě cesty. Podle Daniëla de Koka právě oprava druhé funkce na MKL 2020 Update 1 zlepšuje výkon AMD Zen.

Podrobnosti

Funkční kategorie

Intel MKL má následující funkční kategorie:

  • Lineární algebra : Rutiny BLAS jsou operace vektor-vektor (úroveň 1), matice vektoru (úroveň 2) a matice matice (úroveň 3) pro skutečná a komplexní data s jednoduchou a dvojitou přesností. LAPACK se skládá z laděných faktorizací LU, Cholesky a QR, vlastních čísel a nejmenších čtverců. MKL také zahrnuje Sparse BLAS, ScaLAPACK , Sparse Solver, Extended Eigensolver , PBLAS a BLACS.
    Protože MKL používá standardní rozhraní pro BLAS a LAPACK, aplikace, která používá jiné implementace, může získat lepší výkon na procesorech Intel a kompatibilních procesorech opětovným propojením s knihovnami MKL.
  • MKL zahrnuje řadu rychlých Fourierových transformací (FFT) od 1D po vícerozměrné, od složitých po komplexní, od reálných po komplexní a od skutečných po reálné transformace libovolných délek. Aplikace napsané pomocí open source FFTW lze snadno přenášet do MKL propojením s knihovnami obálek rozhraní poskytovanými jako součást MKL pro snadnou migraci.
    Klastrové verze LAPACK a FFT jsou také k dispozici jako součást MKL, aby kromě paralelnosti jednoho uzlu z multithreadingu využívaly rovnoběžnost MPI.
  • Mezi vektorové matematické funkce patří výpočetně náročné základní matematické operace pro reálné a komplexní datové typy s jednoduchou a dvojitou přesností. Ty jsou podobné funkcím libm z knihoven kompilátorů, ale pro lepší výkon fungují spíše na vektorech než na skalářích. Existují různé ovládací prvky pro nastavení přesnosti, chybového režimu a zpracování denormalizovaných čísel pro přizpůsobení chování rutin.
  • Statistické funkce zahrnují generátory náhodných čísel a rozdělení pravděpodobnosti. optimalizováno pro vícejádrové procesory. Zahrnuty jsou také rutiny náročné na výpočetní výkon i mimo něj pro výpočet základních statistik, odhad závislostí atd.
  • Mezi funkce přizpůsobení dat patří splajny (lineární, kvadratické, krychlové, vyhledávání, kroková konstanta) pro 1-dimenzionální interpolaci, které lze použít v aplikacích pro analýzu dat, geometrickém modelování a aproximaci povrchu.
  • Hluboká neurální síť
  • Dílčí diferenciální rovnice
  • Řešení problémů s nelineární optimalizací

Viz také

Reference

externí odkazy