Mathematikkernbibliothek

Mathematikkernbibliothek
Entwickler (en) Intel
Erstveröffentlichung 9. Mai 2003; Vor 19 Jahren
Stabile Version
2022.1 / 18. Mai 2022; Vor 2 Monaten[1]
Geschrieben in C/C ++, Intel DPC ++ Compiler, Forran
Betriebssystem Microsoft Windows, Linux, Mac OS
Plattform Intel Xeon, Intel XE, Intel Core Prozessor, Intel Atom[2]
Typ Bibliothek und Rahmen
Lizenz Freeware Unter ISSL[3][4]
Webseite www.Tel.com/Inhalt/www/uns/en/Entwickler/Werkzeug/Oneapi/Onemkl.html Edit this on Wikidata

Intel Oneapi Mathematikkernbibliothek (Intel Onemkl; ehemals Intel Math Kernel Library oder Intel MKL) ist a Bibliothek von optimierten mathematischen Routinen für Wissenschaft, Ingenieurwesen und finanzielle Anwendungen. Kernmathematische Funktionen umfassen Blas, Lapack, Scalapack, spärliche Löser, Fast Fourier transformiertund Vektormathematik.[5][6]

Die Bibliothek unterstützt Intel -Prozessoren[2] und ist verfügbar für Fenster, Linux und Mac OS Betriebssysteme.[5][6][7]

Intel Oneapi Math Kernel Library ist nicht zu verwechseln mit Oneapi Math Kernel Library (Onemkl) Schnittstellen, ein Stück Open-Source Klebercode Dadurch können Intel MKL -Routinen aus Daten parallel C ++ verwendet werden.[8]

Geschichte und Lizenzierung

Intel startete am 9. Mai 2003 die Math Kernel Library und nannte sie Blas.lib.[9] Die Entwicklungsteams des Projekts befinden sich in Russland und den USA.

Die Bibliothek war in einem eigenständigen Formular erhältlich, kostenlos unter den Bedingungen der Intel vereinfachte Softwarelizenz[3] die eine Umverteilung ermöglichen.[10]

Seit April 2020 ist MKL Teil von Oneapi geworden. Die kommerzielle Unterstützung für ONEMKL ist beim Kauf als Teil von erhältlich Oneapi Basis -Toolkit.

Leistung und Verkäufersperrung

MKL und andere von der generierte Programme Intel C ++ - Compiler und die Intel DPC ++ Compiler Verbesserung der Leistung mit einer Technik namens Funktion Multi-Versioning: Eine Funktion wird für viele der x86 kompiliert oder geschrieben Befehlssatz Erweiterungen und zur Laufzeit verwendet eine "Master-Funktion" die CPUID Anweisung zum Auswählen einer Version, die für die aktuelle CPU am besten geeignet ist. Solange die Masterfunktion eine nicht-unüberlegte CPU erkennt, wählt sie fast immer die grundlegendste (und langsamste) Funktion aus, unabhängig davon, welche Anweisungen die CPU-Behauptungen zur Unterstützung festlegen. Dies hat das System einen Spitznamen von erhalten Routine "Cripple Amd" seit 2009.[11] Ab 2020MKL von Intel bleibt die numerische Bibliothek, die standardmäßig standardmäßig installiert ist Numpy, Sympy).[12][13] Obwohl man sich auf die MKL verlassen, Matlab Implementierte eine Problemumgehung, beginnend mit der Release 2020A, die die volle Unterstützung für AVX2 durch die MKL auch für Non -Intel -CPUs (AMD) gewährleistet.[14]

In älteren Versionen setzen Sie die Variable Umgebungs undokumentiert MKL_DEBUG_CPU_TYPE=5 Könnte verwendet werden, um die von der Anbieter String abhängige Codepath -Auswahl zu überschreiben und unterstützte Anweisungen bis AVX2 für AMD -Prozessorbasis -Systeme zu aktivieren, die im Vergleich zu Intel -CPUs zu einer gleichen oder sogar besseren Leistung führen.[15][16][17] Seit dem Update 1 2020 funktioniert die Umgebungsvariable nicht mehr, aber Intel introcuded benutzerdefinierte Kernel für Zen 2 für DGEMM (jedoch nicht für SGEMM), was immer noch schlechter ist als bei der Verwendung von mkl_serv_intel_cpu_true hack.[12][13][18]

Mindestens zwei Routen für Haken Die internen Routinen des MKL, um die Diskriminierung zu beseitigen, wurden entdeckt. Der Haken kann zur Kompilierungszeit durch Verknüpfen oder zur Laufzeit von hinzugefügt werden Injektion. Agner Nebel entdeckte, dass MKL- und ICC-Binärdateien auch einen versteckten nicht diskriminierenden Dispatcher haben. EIN mkl_serv_intel_cpu_true Die Funktion wurde 2019 entdeckt. FOGs Intel_Dispatch_Patch bietet Code, der beide Routen anhängt.[19] Laut Daniël de Kok verbessert die letztgenannte Funktion auf MKL 2020 Update 1 die Leistung für AMD Zen.[18]

Einzelheiten

Funktionskategorien

Intel MKL hat die folgenden funktionalen Kategorien:[20]

  • Lineare Algebra: BLAS-Routinen sind Vektor-Vektor (Stufe 1), Matrix-Vektor (Stufe 2) und Matrix-Matrix-Operationen (Stufe 3) für reale und komplexe Einzelgenauigkeitsdaten. LAPACK besteht aus abgestimmten LU-, Cholesky- und QR -Faktorisierungen, Eigenwert und Löser der kleinsten Quadrate. MKL enthält auch spärliche Blas, Scalapack, Spärlicher Löser, Erweiterte Eigensolver (Fest, Pardiso), Pblas und Blacs. MKL wurde wegen kleiner Dimensionen nur gut libxsmm.
    Da MKL Standardschnittstellen für BLAS und LAPACK verwendet, kann die Anwendung, die andere Implementierungen verwendet, eine bessere Leistung bei Intel und kompatiblen Prozessoren, indem sie mit MKL-Bibliotheken wieder verlost.
  • MKL umfasst eine Vielzahl von Fast Fourier transformiert (FFTS) Von 1d bis mehrdimensional, komplex bis komplex, real bis komplex und real bis realer Transformationen willkürlicher Längen. Bewerbungen mit der Open Source Fftw Kann leicht zu MKL portiert werden, indem mit Schnittstellenhülle -Bibliotheken, die als Teil von MKL zur einfachen Migration bereitgestellt werden, verknüpft werden können.
    Clusterversionen von Lapack und FFTS sind auch als Teil von MKL erhältlich, um die MPI -Parallelität zusätzlich zu einer einzelnen Knotenparallelität von Multithreading zu nutzen.
  • Vektormathematik Funktionen umfassen rechnerisch intensive kernmathematische Operationen für reale und komplexe Datentypen für einzelne und doppelte Präzision. Diese ähneln Libm -Funktionen von Compiler -Bibliotheken, arbeiten jedoch eher auf Vektoren als auf Skalaren, um eine bessere Leistung zu erzielen. Es gibt verschiedene Steuerelemente für die Festlegung von Genauigkeit, Fehlermodus und der Denormalisierte Zahlenbehandlung, um das Verhalten der Routinen anzupassen.
  • Statistiken Funktionen umfassen Zufallszahlengeneratoren und Wahrscheinlichkeitsverteilungen. optimiert für Multicore -Prozessoren. Ebenfalls enthalten sind rechenintensiv in und außerhalb der Kernroutinen, um grundlegende Statistiken, Schätzungen von Abhängigkeiten usw. zu berechnen, usw.
  • Datenanpassung Zu den Funktionen gehören Splines (linear, quadratisch, kubisch, nachgedacht, schrittweise konstant) für eine 1-dimensionale Interpolation, die in Datenanalysen, geometrischen Modellierungen und Oberflächenannäherungsanwendungen verwendet werden kann.
  • Tiefes neuronales Netzwerk
  • Partielle Differentialgleichungen
  • Nichtlineare Optimierungsproblemlöser

Siehe auch

Verweise

  1. ^ "Intel® Math Kernel Library Release und neue Funktionen". Software.intel.com.
  2. ^ a b Intel® Oneapi Math Kernel Library (ONEMKL) | Intel® -Software
  3. ^ a b "Intel vereinfachte Softwarelizenz".
  4. ^ "Onemkl-Oneapi-Spezifikation 1.1-REV-1-Dokumentation".
  5. ^ a b "Intel Math Kernel Library".
  6. ^ a b "Intel Math Kernel Library (MKL)".
  7. ^ "MKL - Intel Math Kernel Library". 23. April 2012.
  8. ^ "Oneapi-Src/Onemkl". Oneapi-Src. 19. März 2021. ONEMKL-Schnittstellen sind eine Open-Source-Implementierung der ONEMKL-Daten parallel C ++ (DPC ++) Schnittstelle gemäß der ONEMKL-Spezifikation. Es funktioniert mit mehreren Geräten (Backends) mit Gerätespezifischen Bibliotheken darunter.
  9. ^ "Intel startet Bibliothekstool für Entwickler. (Intel Math Kernel Library 6.0) (kurzer Artikel)". Telecomworldwire. 9. Mai 2003. Abgerufen 29. November, 2009.
  10. ^ "Intel Math Kernel Library Lizenzierung FAQ".
  11. ^ Agner Nebel. "Agners CPU -Blog - Intels" Cripple AMD "-Funktion".
  12. ^ a b "Kommentarkette in: R/MATLAB - MATLAB zwingen, einen schnellen Codepath für AMD Ryzen/Tr -CPUs zu verwenden - bis zu 250% Leistungssteigerungen.". Reddit. Abgerufen 2020-06-06.
  13. ^ a b "Hochleistungscomputerzentrum Stuttgart - Wissensbasis - Bibliotheken (HAWK)". Abgerufen 2020-06-06.
  14. ^ "Verkrüppelt nicht mehr: MATLAB läuft jetzt mit voller Geschwindigkeit auf AMD -CPUs - Extremetech". www.extremetech.com. Abgerufen 2020-10-29.
  15. ^ "R/MATLAB - How -to zwingen MATLAB, einen schnellen Codepath für AMD Ryzen/Tr -CPUs zu verwenden - bis zu 250% Leistungsgewinne.". Reddit. 17. November 2019. Abgerufen 2019-11-27.
  16. ^ Sherbaz (2019-11-06), Github - Sherbazhashmi/HackathonServer: Hackathon Python Server mit ArcGIS -Integration, abgerufen 2019-11-27
  17. ^ "MKL hat eine schlechte Leistung bei einer AMD -CPU". Mingru Yang.
  18. ^ a b de Kok, Daniël. "Intel MKL auf AMD Zen". Danieldk.eu.
  19. ^ "Intels" Cripple AMD "-Funktion - Agtners CPU -Blog".
  20. ^ Admin (2019-11-14). "Entwicklerreferenz für Intel® Math Kernel Library - C". Software.intel.com. Abgerufen 2019-11-27.

Externe Links