Summerbreeze schrieb:
Ich sehe den schwarzen Peter jetzt nicht zwingend bei Intel. Die müssten ihre Bibliothek dann doch auch für AMDs Implementierung verifizieren? Warum sollten sie das tun?
Den schwarzen Peter sehe ich bei MathWorks.
Ich denke beides ist richtig. Es ist ja nicht so, als das AVX2 Code irgendeiner verifizierung bedarf. AMD muss sicherstellen, dass AVX2 Code auf ihren Prozessoren wie vorgesehen läuft. Aber es gibt ja nicht 3 Arten von AVX2 Code, der jedesmal auf Lauffähigkeit hin verifiziert werden müsste.
Und auch spiezifische Architektur Optimierungen betreffen typischerweise nur die Performance Charakteristika einer Architektur, wie beispielsweise Cache Größen, Latenz, etc... Das kann und soll Intel gerne optimieren mit der Folge, dass der Code dann auf Intel Systemen besser läuft als auf AMD Systemen. Jeder würde das machen. Dafür unterhält man typischerweise solche Produktlinien. ABER, in meinen Augen ist und bleibt das gezielte Abschalten ganzer Befehlssatzerweiterungen nach Vendor String einfach ein Unding, dass dringend abgestellt gehört, bzw. die Benutzung solcher Software in frei verkäuflicher Software gehört eingestellt, denn:
Man stelle sich folgendes vor: Wenn AMD in 2 Jahren eine marktbeherrschende Stellung bei High-End Grafikkarten ereichen würde (sagen wir so wie Nvidia heute bei High End GraKas wie der 2080 Ti oder Titan) und in ihrem Treiber eine CPU Vendor String Abfrage implementieren würde, die die Leistung des Renderpfads auf Intel CPUs um auch nur 15% reduzieren würde.... Würde man das auch verteidigen?... Hier, reden wir von 400% und die MKL ist quasi die 2080 Ti der nummerischen Libraries.
Der Vergleich ist nicht perfekt, aber Intel benutzt ihre MKL nicht dafür das maximale aus ihren eigenen CPUs rauszuholen, sondern den Einsatz von CPUs des Konkurenten zu verhindern. Zu nichts anderem ist diese Vendor String Abfrage gut. Sie macht Intel CPUs nicht schneller. Sie macht AMD CPUs langsamer.
------------
Unabhängig davon hat Mathworks bzw. Matlab definitiv ein Problem, denn die geben für ihr aktuelles Matlab Release als System Requirements an:
Und die letzte Zeile wirkt jetzt halt wirklich bizarr, wenn man überlegt, das auf deren Produkt AVX2 auf AMD CPUs bislang überhaupt nicht zum Einsatz kam.
Man könnte meinen denen wäre dieser Umstand garnicht bewusst gewesen, was aber auch nicht besser ist.