Werbung
Seit gestern macht die Meldung die Runde, dass Anwendungen, die im Hintergrund die Intel Math Kernel Library (MKL) verwenden bzw. auf dieser basieren, andere Prozessoren benachteiligen. Dies wurde aus verschiedenen Gründen auch als Vorwurf an Intel verstanden – auch weil Intel offenbar einige Tester dazu anhalten wollte, mit entsprechender Software ihre Tests durchzuführen.
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.
Neu sind diese Einschränkungen allerdings nicht. Bereits seit zehn Jahren ist bekannt, dass es solche Einschränkungen in Anwendungen wie Matlab, NumPy und SymPy gibt. Die entsprechende Routine in MKL bzw. den Programmen wird demzufolge auch cripple AMD genannt.
Doch Matlab bzw. MKL lässt sich dazu bringen, auch bei AMD-Prozessoren die neueren Instruktionen zu verwenden. In einem Reddit-Posting gibt es die entsprechende Anleitung dazu. Aus dem gleichen Posting stammen einige Benchmark-Werte, die einige Matlab-Operationen mit nicht optimierter und optimierter MKL-Bibliothek zeigen. In einem weiteren Reddit-Thread werden weitere Ergebnisse gesammelt.
Die Ergebnisse sind eindeutig: Das Plus durch die Verwendung von AVX2 reicht von 17 bis 258 %. Damit sind die Ergebnisse durchaus signifikant. Damit sind Benchmarks die auf solchen Programmen basieren eigentlich wenig aussagekräftig, denn sie verwenden nicht das volle Potenzial der Hardware. Erst kürzlich war Intel wegen der Verwendung vermeintlich nicht optimierter Software im HPC-Vergleich in der Kritik. AMD ist aber ebenfalls nicht frei von solchen Fehlern. Als Vorschau auf die neuen EPYC-Prozessoren veröffentlichte man mehrfach Benchmarks auf Basis von NAMD (Nanoscale Molecular Dynamics Program). Auch hier kam für die Intel-Prozessoren eine Version zum Einsatz, die keine AVX-512-Instruktionen verwendete und damit nicht auf die Xeon-Prozessoren optimiert war.
Die Änderungen, die an Matlab gemacht werden müssen, um beispielsweise AVX2 zu nutzen, beschränken sich auf einige wenige Codezeilen und sind in wenigen Minuten gemacht. Neben einer Anleitung für Windows gibt es eine solche für Linux-Nutzer. Über die Auswirkungen der fehlenden Optimierungen wird derzeit gestritten.