Optimierte Rechenfunktionen: AVX2-Fix beflügelt AMDs Ryzen-Prozessoren

Intels Programmierbibliothek Math Kernel Library benachteiligt AMD-Prozessoren, wenn man sie unbedacht nutzt.

In Pocket speichern vorlesen Druckansicht 149 Kommentare lesen
Math Kernel Library: AVX2-Fix beflügelt AMDs Ryzen-Prozessoren

(Bild: Mark Mantel / heise online)

Lesezeit: 2 Min.

Die Programmierbibliothek Math Kernel Library (MKL) von Intel setzt je nach vorhandenem Prozessor unterschiedliche CPU-Instruktionen ein. Intels aktuelle Modelle laufen mit effizienten Advanced Vector Extensions (AVX2 und AVX-512). Bei AMD-CPUs fällt MKL stets auf die alten Streaming SIMD Extensions (SSE) zurück, obwohl Ryzen-Prozessoren AVX(2) beherrschen. Wenige Zeilen Code in einer Batch-Datei beheben das Problem unter Windows und beschleunigen Ryzen-CPUs deutlich – teilweise ist die Rede von 400 Prozent.

Die Batch-Datei forciert unabhängig vom eingebauten Prozessor die Nutzung von AVX2-Instruktionen in einer MKL-Anwendungen und hebelt somit den SSE-Fallback-Modus aus. Auf Reddit gibt es eine Anleitung zur Erstellung. Alternativ ist die Einstellung per Systemvariable möglich.

Entwickler setzen MKL bei mathematischen Anwendungen wie Matlab, NumPy und SymPy ein. AMD stellt eine eigene, optimierte Programmierbibliothek unter anderem mit den betroffenen Basic Linear Algebra Subprograms (BLAS) ausschließlich für Linux-Betriebssysteme und nicht für Windows bereit – AMD Optimizing CPU Libraries (AOCL) genannt.

Das Problem mit MKL auf AMD-Prozessoren ist schon seit etwa 10 Jahren bekannt. Schon 2009 berichtete der anerkannte Experte Agner Fog über das Problem. Die Benachteiligung von AMD-Prozessoren durch Intel-Compiler wurde zudem von der US-Wettbewerbsaufsicht FTC untersucht, weshalb Intel seither darauf hinweisen muss. Dass die optimierte Intel-MKL trotzdem in gängigen Programmpaketen zum Einsatz kommt, liegt letztlich in der Verantwortung von deren Entwicklern.

Das Thema erhält jetzt neue Beachtung, nachdem AMD die Ryzen-3000-Prozessoren vorgestellt und die Ryzen Threadripper 3000 angekündigt hat. Die Zen-2-Rechenkerne beider CPU-Serien haben gegenüber den Vorgängern breitere Gleitkomma-Einheiten für schnellere AVX2-Berechnungen erhalten. (mma)