Intel MKL 2020.2: Neuer AMD-Workaround schneller als Zen-Kernel
Nachdem Intel den Debug Mode in seiner Math Kernel Library (MKL) mit Release 2020.1 entfernt und damit dem Setzen der entsprechenden Variablen jeden Effekt genommen hat, besitzt Release 2020.2 jetzt einen Zen-Kernel. Intel MKL 2020.2 nutzt damit einen spezifischen Pfad für fremde CPUs und nicht mehr einfach blind SSE.
Zen-CPUs auf Zen-Kernel langsamer
Allerdings ist zu beobachten, dass Operationen wie beispielsweise „dgemm“ unter Verwendung einer AMD-CPU auf dem spezifisch dafür vorgesehenen Codepfad des neuen Zen-Kernels langsamer arbeiten als über den auf Intel-CPUs ausgelegten Kernel von Intel MKL 2020.2. Doch ein neuer Workaround für x86-Prozessoren, die nicht von Intel stammen, steht bereits vor der Tür.
Neuer Workaround für AMD-CPUs unter Linux
Der Python Contributor Daniël de Kok hat einen Weg gefunden, die CPU- oder auch Vendor-ID sowie Featureset-Abfrage respektive deren Ergebnis mit einfachen Mitteln zu „faken“.
Intel MKL besitzt eine Abfrage vom Typ mkl_serv_intel_cpu_true
, um die Identität des CPU-Herstellers zu überprüfen. Meldet diese das Ergebnis 1
, benutzt die Intel Library den Intel-Kernel sowie den entsprechenden Codepfad, ist das Ergebnis 0
, wird der Zen-Kernel aktiviert.
Mit dem folgenden „Trick“ hat der Entwickler nun einen einfach Weg gefunden, mit dem sich die Abfrage abfangen und immer mit 1 = true
zurück melden lässt.
1 int mkl_serv_intel_cpu_true() {
2 return 1;}
Weitere Details können dem Blog von Daniël de Kok entnommen werden, in dem dieser die Einzelheiten seines Workarounds erläutert, die Intel MKL auch mit Prozessoren von AMD dazu bringen, den AVX2-Kernel zu verwenden.
MATLAB nutzt weiterhin Vorgängerversion
Eine Anfrage von Dr. Sven Reischauer vom Max-Planck-Institut für Herz- und Lungenforschung, der erneut sowohl als Quelle als auch Hinweisgeber für diese Meldung mitverantwortlich zeichnet, hat ergeben, dass MathWorks seine Software MATLAB, zur Lösung mathematischer Probleme und zur grafischen Darstellung der Ergebnisse, aufgrund dieser Thematik vorerst lediglich mit Intel MKL R2020.0 und aktiviertem Debug Mode ausgeliefert und nicht auf Intel MKL R2020.1 (oder höher) wechselt, um Nutzer mit AMD-CPU nicht zu benachteiligen.
Benchmarks aus der Community
Aus der Community kommt zudem eine kleine Sammlung von CPU-Benchmarks, an denen sich sowohl die Community als auch die Redaktion mit Ryzen Threadripper 3000 (Test) beteiligt haben und die mit verschiedenen Matrix-Größen von 7.500 × 7.500 und 10.000 × 10.000 die Performance auf verschiedenen Prozessoren in MATLAB veranschaulichen.
Weitere Informationen zum Thema Intel MKL vermitteln die beiden Artikel „Intel MKL: Workaround erhöht Leistung auf AMD Ryzen signifikant“ und „Intel MKL: Matlab R2020a beinhaltet offiziellen AMD-Workaround“. Ansprechpartner für Hintergrundinformationen und Benchmarks zum Thema ist Community-Mitglied „Ned Flanders“.
Auch Intel MKL R2020.3 benötigt Workaround
Auf Nachfrage von Community-Mitglied „0x8100“ hin, hat die Redaktion noch einmal seine entsprechenden Kontakte befragt, wie es sich mit der Performance auf AMD-CPUs unter Verwendung der neuesten Intel MKL R2020.3 verhält und erhielt prompt eine Anwort.
Auch wenn Intel bereits mit MKL R2020.2 angekündigt hat, auch x86-Prozessoren abseits des eigenen Portfolios in zukünftigen Veröffentlichungen besser zu unterstützen, ist dies mit Intel MKL R2020.3 noch nicht der Fall.
Performance regressions may occur on non-Intel x86-compatible processors. These regressions will be addressed in a future release.
Intel
Auf AMD-CPUs wird weiterhin der spezifisch dafür vorgesehene Codepfad des neuen Zen-Kernels gewählt, der nach wie vor mit Leistungseinbußen behaftet ist. Auch mit Update 3 der Programmbibliothek laufen x86-Prozessoren, die nicht von Intel stammen, nur mit einem „Trick“ auf dem AVX2-Kernel, dann aber mit entsprechender Performance.
Der Workaround ist somit nach wie vor notwendig, wollen Anwender mit AMD-CPU die volle Leistung für mathematische Berechnungen mittels Intel MKL abrufen.
Die Redaktion dankt Community-Mitglied „0x8100“ für den Hinweis zu diesem Update.