Intel MKL: Matlab R2020a beinhaltet offiziellen AMD-Workaround

Sven Bauduin
263 Kommentare
Intel MKL: Matlab R2020a beinhaltet offiziellen AMD-Workaround
Bild: Intel

Intels Programmbibliothek Math Kernel Library gilt als schlecht optimiert für AMD Ryzen und deshalb notorisch langsam. Zumindest im neuen Release Matlab R2020a ist das jetzt nicht mehr der Fall. Der Workaround, mit dem Matlab im November des letzten Jahres ein Plus von 258 Prozent mit Zen+ erzielen konnte, ist nun implementiert.

Matlab R2020a beinhaltet Intel MKL 2019.3

Intels Programmbibliothek MKL wurde in Matlab auf die Version 2019.3 aktualisiert, Intel selbst ist mittlerweile schon bei MKL 2019 Update 4 angekommen. Das Matlab R2020a Major Release beinhaltet jetzt eine Laufzeitroutine, die den Prozessor mittels CPU ID und Feature-Set-Abfrage prüft und auf Basis des Ergebnisses bei Nutzung einer AMD-CPU den dem Feature Set entsprechenden Debug Mode der MKL selbstständig setzt.

Workaround bleibt abseits von Matlab wichtig

Das händische Setzen einer Systemvariablen oder die Verwendung der BAT-Datei ist für Matlab demnach nicht mehr notwendig, kann jedoch trotzdem noch Sinn ergeben, sollte auf demselben System andere Software verwendet werden, welche die MKL beinhalten. Beispiele dafür sind NumPy und SymPy.

Die Laufzeitroutine in Matlab repariert die Problematik im Zusammenspiel von Intel MKL und AMD Ryzen ausschließlich in Matlab.

Korrekt gesetzte Variable und neue Referenzen

Ob die Variable für den korrekten Codepfad richtig gesetzt wurde, lässt sich über den Befehl „getenv MKL_DEBUG_CPU_TYPE“ abfragen, die Matlab nach dem erstmaligen Aufrufen der MKL auf Ryzen-Systemen mit der Antwort „5“ für AVX2 quittiert, auch wenn keine entsprechende Systemvariable angegeben ist.

Automatisch gesetzte System Variable in Matlab R2020a
Automatisch gesetzte System Variable in Matlab R2020a (Bild: Dr. S. Reischauer)

Ebenfalls überarbeitet wurde die integrierte Benchmark-Funktion von Matlab, die jetzt eine größere Berechnung durchführt und einige neue Referenz-CPUs beinhaltet, unter anderem die neuen AMD Ryzen Threadripper 3000 (Test), welche die Liste auch anführen.

Die gleiche CPU wie beim Test aus dem November 2019, ein AMD Ryzen 5 2600X auf Zen+-Basis mit einer TDP von 95W aus dem 12-nm-Prozess von GlobalFoundries, bringt es in diesem Benchmark nun auch ohne das manuelle Setzen der Systemvariablen auf beachtliche Ergebnisse.

Threadripper 3000: Führt die Liste in Matlab R2020a an
Threadripper 3000: Führt die Liste in Matlab R2020a an (Bild: Dr. S. Reischauer)
Ryzen 2600X: Schnell auch ohne manuellen Workaround
Ryzen 2600X: Schnell auch ohne manuellen Workaround (Bild: Dr. S. Reischauer)

Hinweis kommt direkt aus der ComputerBase-Community

Den Schritt, den Matlab gegangen ist, kann vor allem für freie Software groß sein, wie eines der ComputerBase-Community-Mitglieder zu berichten weiß:

Andere Software-Produzenten müssen nun entscheiden, ob diese Vorgehensweise für sie ebenfalls eine gangbare Art ist, allen voran die vielen Open-Source-Projekte, für die die Benutzung einer Closed-Source-Bibliothek, die noch dazu einen nach Vendor String diskriminierenden CPU-Dispatcher verwendet, sicherlich kein idealer Zustand ist.

Dr. S. Reischauer, Max-Planck-Institut
Update 30.03.2020 20:19 Uhr

Intel MKL impliziert keinen Workaround

Anders als von einigen Nutzern fälschlicherweise angenommen und von anderen Formaten auch ein wenig unkonkret formuliert, impliziert weder das in Matlab R2020a zum Einsatz kommende Intel MKL 2019 Update 3 noch das aktuellste Update 4 der MKL-Programmbibliothek den Workaround mit dem AMD Ryzen nun in Matlab zu erwartende Ergebnisse erzielen.

Das Lösen des Knotens ist einzig der Laufzeitroutine der Matlab-Macher von MathWorks zu verdanken, die den Prozessor mittels CPU ID und Feature-Set-Abfrage prüft und die MKL in den Debug Mode schaltet.

Release Notes verraten Workaround auch (fast) offiziell

Auch wenn die Release Notes von Matlab R2020a den Workaround nicht beim Namen nennen, geben sie unter dem Punkt „Performance Enhancements“ doch einen deutlichen Hinweis:

Eine Leistungssteigerung attestieren Matlab R2020a auch die Macher von MathWorks
Eine Leistungssteigerung attestieren Matlab R2020a auch die Macher von MathWorks (Bild: MathWorks)

Der Hinweis auf diese Änderung in Matlab kam wie bereits beim ersten Artikel von Community-Mitglied „Ned Flanders“, der mit bürgerlichem Namen Dr. Sven Reischauer heißt und am Max-Planck-Institut für Herz- und Lungenforschung tätig ist, und der erneut sowohl als Quelle als auch Hinweisgeber für diese Meldung und deren Benchmarks mitverantwortlich ist. Die Redaktion dankt ihm für den Hinweis zu dieser Meldung.