MKL Tweak auf Ryzen Systemen verbessert die Leistung drastisch

Z

ZeroStrat

Gast
Der User @Ned Flanders hat einen besonderen Tweak entdeckt, der die Leistung auf Ryzen Systemen drastisch verbessert, wenn Intel's MKL zum Einsatz kommt.

Nähere Infos + eine Anleitung siehe hier: https://www.techpowerup.com/261241/...oosts-amd-ryzen-mkl-performance-significantly

Der Originalartikel bei reddit ist hier zu finden: https://www.reddit.com/r/matlab/comments/dxn38s/howto_force_matlab_to_use_a_fast_codepath_on_amd/

Der Thread soll dazu dienen, unterschiedliche Benchmarks zusammenzutragen. Dabei soll sich nicht nur auf Matlab beschränkt werden. Python ist wohl ebenso betroffen.

Ihr seid herzlich eingeladen, eure Ergebnisse zu posten und den Sachverhalt zu diskutieren. Bitte kein Gebashe gegen Intel. Das ist ein Sachthread.
Ergänzung ()

Ich habe als erstes den internen Benchmark von Matlab verwendet, welcher mit bench(n) aufgerufen wird.

Aktiver AVX2 Tweak R9 3900X@stock:
Screen Shot 11-18-19 at 06.40 PM.PNG


Kein AVX2 Tweak R9 3900X@stock:
Screen Shot 11-18-19 at 06.48 PM.PNG
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: ro///M3o, Scientist, scratchedpaint und 17 andere
Ich bin noch unterwegs und kann noch nichts beitragen, aber um numpy stehts ebenfalls nicht gut. Bin durch einen Reddit User hierauf aufmerksam gemacht wirden.

1574104575211.png


Quelle

Der Code der hier gebencht wurde ist auch in der Quelle verfügbar. Vieleicht mag ja einer hier mal testen!

Der selbe User hat den Workaround getestet.

Apparently this trick does also some magic to pythons numpy on windows (std conda install that brings the mkl lib in and no way to change to openblas easily). The code shown in the article below took 64s on my Ryzen 3600 with the workaround and 266s without it! Thank you for posting!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ro///M3o, Scientist, scratchedpaint und 9 andere
Ich habe noch den anderen Matlab Benchmark gemacht. Links ohne, rechts mit Tweak.
Screen Shot 11-18-19 at 08.23 PM.PNG


Den Python Kram habe ich noch nicht zum laufen gekriegt.
 
  • Gefällt mir
Reaktionen: Rickmer
Des sind halt echt keine kleinen Unterschiede!
 
  • Gefällt mir
Reaktionen: scratchedpaint, buddha281, Mcr-King und 3 andere
Bei den Matrix Multiplikationen nahezu Faktor 4 ist schon richtig derbe...
 
  • Gefällt mir
Reaktionen: McTheRipper, Mcr-King, Gerry18 und eine weitere Person
ZeroStrat schrieb:
Den Python Kram habe ich noch nicht zum laufen gekriegt.

Schau mal auf die Seite von Pudget Systems die ich oben verlinkt hab. Die haben den Code den sie da gebenchmarkt haben angegeben.
 
  • Gefällt mir
Reaktionen: scratchedpaint
Das müsste doch eigentlich per Compiler-Flag switch in der nächsten Matlab Version gefixed sein...falls nicht mach ich mir ernsthaft sorgen um die MatLab-Devs.

ebenso mit NumPy....wenn das nicht bis Januar gefixed ist, machen sich die doch lächerlich :-).

Well Done Ned! Gute Arbeit.
 
  • Gefällt mir
Reaktionen: ro///M3o, Celinna, McTheRipper und 7 andere
  • Gefällt mir
Reaktionen: Ned Flanders, Gerry18 und MarcelGX
Das wäre in der Tat eine Möglichkeit. Sollte nun ein überhasteter Hot fix kommen, gewinnt AMD immerhin. Schön ist das mitnichten
 
ich habe dazu noch diesen link gespeichert. leider hab ich keine ahnung wie ich das in PyCharm zum laufen kriege (trotz hilfe des authors). hätte meine monte-carlo-simulationen bestimmt gut beschleunigt
 
ZeroStrat schrieb:
Ich habe noch den anderen Matlab Benchmark gemacht. Links ohne, rechts mit Tweak.
Wie kommt es, das bei kleinen 'n' - Iterationen? die Zeiten deutlich schlechter sind mit Tweak?

Ich meine, das sind Millisekunden also wohl wenig relevant, aber trotzdem interessant.
 
Rickmer schrieb:
Wie kommt es, das bei kleinen 'n' - Iterationen? die Zeiten deutlich schlechter sind mit Tweak?

Ich meine, das sind Millisekunden also wohl wenig relevant, aber trotzdem interessant.
Ich habe den Rechner während der Runs normal weiter genutzt zum arbeiten, was bei den long runs im Mittel wenig Einfluss hat.
 
Ned Flanders schrieb:
Schau mal auf die Seite von Pudget Systems die ich oben verlinkt hab. Die haben den Code den sie da gebenchmarkt haben angegeben.
Ich vermute mal, daß OpenBLAS auf AMD nochmal ne Stufe schneller ist, als der MKL Workaround.
 
  • Gefällt mir
Reaktionen: Ned Flanders
Rickmer schrieb:
Wie kommt es, das bei kleinen 'n' - Iterationen? die Zeiten deutlich schlechter sind mit Tweak?

Nach meiner Erfahrung ist der erste run einen hauch langsamer als der folgende. Das ist also ein Artefakt. Der Bench dauert aber relativ lange, weswegen es etwas nervig ist den x-mal zu wiederholen. Das schlägt sich auch nur in den kleinen n's nieder in dem Bench,

Das siehst du auch im Integrierten Benchmark von Matlab. Die ersten ein/zwei Läufe sind of langsamer.

1574118821893.png


Danach ist es oben.

1574118843034.png
 
  • Gefällt mir
Reaktionen: McTheRipper, Protogonos und Rickmer
stone1978 schrieb:
Habe das jetzt gelesen. Nur heißt das ich muss Matlab installieren und dann kann man mit dem Workaround überall bzw. in Programmen wo diese Bibliotheken verwendet werden mit einem Performancegewinn rechnen?

Oder betrifft das dann nur Matlab?
Prinzipiell "sollte" das ganze in allen Programmen funktionieren, die die MKL von Intel benutzen. Matlab ist nur ein weiteres Beispiel davon. Ist also nicht nötig Matlab zu installieren, weil es sich um einen MKL-Workaround handelt.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: max9123, Ned Flanders und cm87
Wären die Benchmarks von SiSoftware Sandra evtl. auch aussagekräftig? Da wird auch viel mit AVX2 gearbeitet. Aber ich hab' null Ahnung von der Materie.
 
  • Gefällt mir
Reaktionen: Gerry18
Discovery_1 schrieb:
Wären die Benchmarks von SiSoftware Sandra evtl. auch aussagekräftig? Da wird auch viel mit AVX2 gearbeitet. Aber ich hab' null Ahnung von der Materie.
Da sind wir schon zwei. Für mich wäre da interessanter ob man da mal mit Update rechnen kann die das beheben. Den Lustig finde ich das nicht was da abgezogen wird.
 
Sisoft verwendet afaik nicht die MKL in ihren Benchmarks. Aber Du kannst das gerne mal mit und ohne Workaround drüber laufen lassen.

AVX2 ist nicht grundsätzlich betroffen, sondern der Support von Befehlsatzerweiterungen durch die MKL ist nicht gewährleistet.

Kacha schrieb:
@Ned Flanders Gilt das nur fuer die Conda Version von Numpy oder auch die Standard pip Version auf Windows?

Jede Version von Numpy, die auf die MKL als numerische lib zurückgreift.

Ich selbst bin kein Experte für Python. Ein paar Benchmarks wären aber sehr wünschenswert. Hast Du Dir mal die Quelle für den numpy Benchmark oben angeschaut? Vieleicht kannst du den Benchmark ja mit ein paar derivaten nachvollziehen und hier bringen. Das wäre echt super!
 
Zurück
Oben