Werbung
Im vergangenen Jahr wurde bekannt, dass Software, welche die Intel Math Kernel Library (MKL) verwendet, offenbar derart schlecht optimiert ist, dass die Ryzen-Prozessoren von AMD diskriminiert werden und nicht die zu erwartende Leistung erreichen. Als Programmbibliothek für mathematische Berechnungen von Intel ist es aber auch nicht weiter verwunderlich, dass der Fokus hier auf die eigenen Prozessoren gelegt wird.
Aufgefallen ist dies vor allen in Matlab. Der CPU-Dispatcher soll in gewisser Weise diskriminierend vorgehen, denn nur wenn ein Intel-Prozessor im System steckt, werden alle Instruktionen verwendet. Ist dies jedoch nicht der Fall, wird anstatt eines Fallbacks auf SSE3, SSE4 oder AVX1/2, einfach nur SSE1 verwendet. Dabei spielt es keine Rolle, ob der Prozessor eine der eben erwähnten neueren Instruktionen beherrscht oder nicht. Die Ryzen-Prozessoren auf Basis von Zen 2 bieten beispielsweise die Unterstützung für AVX2. Genutzt wurde das AVX2 aber nicht und so blieben auch die neuen Ryzen-Prozessoren weit hinter ihrem Potenzial zurück.
Es gab jedoch einen Workaround. Das Plus durch den Workaround zur Nutzung von AVX2 liegt bei 17 bis 258 %. Damit sind die Ergebnisse durchaus signifikant. Matlab R2020a verwendet als neue Version nun MKL in der Version 2019.3. Über die CPU-ID wird nun abgefragt, welche Instruktionen der Prozessor unterstützt und diese werden durch die MKL-Programmbibliothek dann auch angesprochen.
Die Zuwachs an Leistung liegt auf Niveau des Workarounds. Vor allem die neuen Ryzen-Threadripper-Prozessoren mit 32 oder gar 64 Kernen, die allesamt AVX2 unterstützen, zeigen ein deutliches Leistungsplus. Wer also einen AMD-Prozessor und MatLab verwendet, sollte auf die neue Version R2020a wechseln und sich dies einmal genauer anschauen. Ob AVX2 verwendet wird, lässt sich in MatLab über den Befehl "getenv MKL_DEBUG_CPU_TYPE" abfragen. Gibt das System eine "5" als Rückgabewert, stimmen die Systemvariablen.
Allerdings ist MatLab nur eine der Anwendungen, welche die MKL-Programmbibliothek verwenden. Für anderen gilt weiterhin: Wird nicht eine manuelle Abfrage über die Funktionen des Prozessors vorgenommen, kommt es mit AMD-Prozessoren weiterhin dazu, dass diese nicht ihr idealen Leistungsniveau erreichen. Auch hier funktioniert der Workaround zwar weiterhin, aber dies sollte auf Dauer natürlich anders ablaufen.