Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
NewsIntel MKL: Workaround erhöht Leistung auf AMD Ryzen signifikant
@Ned Flanders Ich schätze mal, die haben keine Lust auf Supportanfragen aufgrund unterschiedlicher BLAS Libs. Kann ich irgendwie verstehen.
Auf der anderen Seite ists natürlich unfair gegenüber Anwendern, die von anderen Libs profitieren würden.
Ah - und weil wir alle so clevere Programmierer sind - wie schwer kann es sein ein "korrekte" CPUID-Query zu machen bei Installation und die entsprechend "optimierte" BLAS zu laden ?
Vermutlich: "nicht möglich => weil haben wir noch nie gemacht"...
Allein schon die Antwort...wenn Speed so wichtig ist nehmt doch Linux.
Ohne jetzt was offizielles sagen zu können ... in vier Wochen kommt Matlab 2020a raus und ich empfehle jedem Matlab User mit AMD CPUs oder mit Ambitionen AMD CPUs einsetzen zu wollen dringend sich das finale 2020a Production Release mal näher anzuschauen.
Das alleine wird es aber nicht bringen. Viel wichtiger wäre das die MKL nicht ohne Alternative als Default ausgeliefert wird. NumPy, Microsoft R Open, PyTorch .... die sind alle dabei.
Wäre halt gut, wenn gerade die OSS Projekte möglichst bald nachziehen. Bei Matlab kennt den Workaround bald jeder, ob die NumPy, PyTorch, Anaconda community sich dem auch bewusst ist weiss ich nicht. Vielleicht muss man da auch nochmal Wellen machen.
Was ich Matlab anrechnen muss ist die Erfahrung mit dem Support seit dem Reddit Beitrag. Ich dachte erst die würden verschnupft reagieren, das Gegenteil ist der Fall.
Ist doch ein gutes Zeichen, dass sie sich der Sache annehmen.
Jetzt nix zu machen würde sicherlich einiges an negativer Resonanz nach sich ziehen, deshalb hat es den Anschein als kümmert man sich. Das ist löblich.
Was ich Matlab anrechnen muss ist die Erfahrung mit dem Support seit dem Reddit Beitrag. Ich dachte erst die würden verschnupft reagieren, das Gegenteil ist der Fall.
Der Aufwand liegt doch nicht daran ein paar Parameter zu ändern sondern sicher zu stellen, dass die entsprechenden Codepfade auch auf AMD CPUs immer exakt die gewollten Ergebnisse liefern und unter keinen Umstand (zusätzliche) Fehler provozieren. Wobei das perspektifisch auch auf alle kommenden Versionen der MKL zutreffen muss.
Ohne jetzt was offizielles sagen zu können ... in vier Wochen kommt Matlab 2020a raus und ich empfehle jedem Matlab User mit AMD CPUs oder mit Ambitionen AMD CPUs einsetzen zu wollen dringend sich das finale 2020a Production Release mal näher anzuschauen.
Also nach dieser Email, die mich vor einer Woche erreicht hat, gäbe es eigentlich Grund zur Freude:
Nur leider funktioniert das wohl noch nicht. Sie arbeiten daran. Lange kanns nicht mehr dauern, aber schneller als per Variable wirds nicht, denn deren Fix entspricht dem Workaround per Sys Variable. Die andere gute Nachricht ist aber das sie die Variable damit auch offiziell validiert haben.
Ich halte Euch auf dem laufenden falls es was neues gibt. Ich werd dann auch den Reddit Post nochmal updaten und eventuell hat @SV3N ja auch interesse die frohe Botschaft nochmal als Update einzupflegen. Aber wie gesagt, noch ist es nicht ganz passiert.
Das System ist sich seiner Identität bewusst, du lügst nur die Intel MKL an. Aber ich weiss was Du meinst, und es gibt mit Sicherheit noch effizientere Wege, aber diese bedeuten eben teure Entwicklungsarbeit. Bis es soweit ist, dürfte das hier eine passable Lösung sein und ich finde es soweit gut wie schnell Matlab reagiert (wenn es wirklich passiert).
Nun ist es auch an AMD die OpenBLAS zu pushen und als offene und leistungsstarke Alternative zu etablieren. Dann hat es sich mit der MKL eh bald erledigt.
Und das ist nur numPy. Ähnliches gilt natürlich für viele andere Codes. "We can see that there are tremendous differences in run time. Unsurprisingly, the default implementation seems to be slowest in most regards (by far!). Intel’s Math Kernel Library (Intel MKL) performs best, which is again not truly surprising, given the fact that I use an Intel i5 processor on my machine."
Vielleicht müsste man halt eher auf ACML coden für AMD CPUs, aber ACML ist ebenfalls bei weitem nicht so gut wie Intel MKL.
In der Regel funktioniert ja MKL gut - nur bei manchen Sachen ist halt dieser dümmliche "Fallback" to generic x86 code absoluter Mist. Da müssten die Entwickler solcher "in between software" wie MatLab eben aufpassen und das mal testen inwieweit hier die Intel Library non-intel CPUs ausbremst. Falls es passiert entweder allgemein auf BLAS switchen für diese Tasks (für non-Intel CPUs) oder eben den MKL-Workaround applizieren.
So oder so eine Sauereri vor allem von Intel hier via MKL nicht richtig zu prüfen ob eine CPU bestimmte features supported sondern als "generic path" direkt den langsamst möglichen zu wählen.
Also noch eine Closed Source Variante halte ich für keine gute Idee, selbst wenn sie nicht gegen andere Architekturen pessimiert ist wie die MKL. Wie wenig diese CPU spezifischen Optimierungen bringen sieht man ja an der MKL auf AMD. Lieber, und das meinte ich mit pushen, Geld in die Entwicklung der OpenBLAS lib stecken damit diese schneller wird wo es bislang hapert, denn das sind spezifische Dinge und kein generelles Problem. An und für sich ist die OpenBLAS bereits ziemlich fix unterwegs.
Da hast du natürlich Recht. Einfach eine andere Closed Source nehmen bringt vermutlich nichts. Zumal ich nicht wirklich weiss wie optimiert ACML ist. Vermutlich sogar noch schlechter als per Default auf openBLAS zu gehen.
Aber gleichzeitig würde man halt bei vielen stark optimierten Sachen die bisherigen Vorteil der MKL aufgeben wenn man einfach "stur" auf openBLAS geht.
Am besten wäre es wenn die Entwickler sensitiviert sind auf solche Phänomene und hier öfter einfach mal "per Default" dieselben Benches mal mit nem Intel mal mit nem AMD fahren und bei "großen" Diskrepanzen halt mal nachschauen was das soll.
Eine "Genuine Intel" Abfrage auszuhebeln ist ja für einen halbwegs versierten ja kein Voodoo und als "Schnelltest" auf BIAS durchaus geeignet.
Wenn die großen Mat-Works-Studios erstmal Intel konsequent auf die Finger klopfen würden bzw. derartige Spielereien möglichst öffentlich breit treten, dann hört sich das Spiel seitens Intel sicher schnell auf.