{"id":118,"date":"2019-11-19T06:13:08","date_gmt":"2019-11-19T05:13:08","guid":{"rendered":"http:\/\/www.batteriewelt.com\/akkublog\/?p=118"},"modified":"2019-11-19T06:13:08","modified_gmt":"2019-11-19T05:13:08","slug":"intel-mkl-workaround-erhoht-leistung-auf-amd-ryzen-signifikant","status":"publish","type":"post","link":"http:\/\/www.batteriewelt.com\/akkublog\/?p=118","title":{"rendered":"Intel MKL: Workaround erh\u00f6ht Leistung auf AMD Ryzen signifikant"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Die Programmbibliothek&nbsp;Math Kernel Library&nbsp;von Intel gilt f\u00fcr AMD Ryzen schlecht optimiert und notorisch langsam. Dies untermauert ein Workaround des Community-Mitglieds&nbsp;Ned Flanders&nbsp;f\u00fcr das Programm&nbsp;Matlab, das in der Wissenschaft f\u00fcr numerische Berechnungen genutzt wird. Mit dem \u201eTrick\u201c rechnet AMD Ryzen erheblich schneller.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Workaround erzwingt AVX2 auf AMD Ryzen<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unter dem Titel \u201eHow-To force Matlab to use a fast codepath on AMD Ryzen\/TR CPUs]How-To force Matlab to use a fast codepath on AMD Ryzen\/TR CPUs\u201c ver\u00f6ffentlichte er im Reddit-Forum als&nbsp;Nedflanders1976&nbsp;einen Workaround, der die Unterst\u00fctzung der Befehlssatzerweiterung AVX2 durch die MKL in Matlab, eine Software des Unternehmens&nbsp;MathWorks, erzwingt. Dadurch ergeben sich teils signifikante Leistungssteigerungen unter Verwendung von Zen-, Zen+- und Zen2-CPUs von AMD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bis 400 Prozent mehr Leistung in Matlab<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Standardm\u00e4\u00dfig fragt die Intel Math Kernel Library die Vendor-ID-Zeichenfolge des genutzten Prozessors ab. Wenn eine andere Zeichenfolge als \u201eGenuineIntel\u201c, wie beispielsweise \u201eAuthenticAMD\u201c, ausgelesen wird, greift die Bibliothek in einer Art Fallback-Modus auf gew\u00f6hnliches SSE zur\u00fcck, ohne die von der CPU real unterst\u00fctzten Befehlssatzerweiterungen zu beachten, was einen erheblichen Leistungsnachteil f\u00fcr Prozessoren vom Typ AMD Ryzen mit ihrer vollen SSE4-, AVX- sowie AVX2-Implementierung mit sich bringt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Workaround zwingt Intels Programmbibliothek dazu, unabh\u00e4ngig vom Ergebnis der CPU-Vendor-ID-Abfrage, AVX2 zu verwenden. Mit dem auf diese Art erzwungenem AVX2 erreicht beispielsweise ein AMD Ryzen 5 2600X bis zu 258 Prozent mehr Leistung in Matlab. Ein Reddit User, der den Workaround auf einem Ryzen 7 3700X mit der neueren Zen-2-Architektur testete, berichtet gar von teilweise mehr als 400 Prozent Leistungssteigerung. Breitgef\u00e4cherte Tests statt Stichproben d\u00fcrften ein genaueres Bild liefern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mehr Leistung per Batchdatei<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die L\u00f6sung ist ein simpler vierzeiliger Code in einer Batch-Datei den der Autor ebenfalls im Reddit-Forum ver\u00f6ffentlicht hat. Zudem stellt er ein Benchmark-Skript zur Verf\u00fcgung, welches die Auswirkungen von AVX2 auf die Leistung von AMD Ryzen hervorhebt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Redaktion dankt den Community-Mitgliedern \u201eNed Flanders\u201c und \u201efanatiXalpha\u201c, die als Quelle und Hinweisgeber f\u00fcr diese News mitverantwortlich zeichnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch NumPy f\u00fcr Python betroffen<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wie sich mittlerweile herausgestellt hat, ist auch&nbsp;NumPy, eine Programmbibliothek f\u00fcr die Programmiersprache&nbsp;Python&nbsp;von der eingangs geschilderten Problematik betroffen. Intern verwenden sowohl Matlab als auch NumPy die beiden Programmbibliotheken&nbsp;BLAS&nbsp;und&nbsp;LAPACK, die ihrerseits Bestandteil der Math Kernel Library sind, f\u00fcr eine effiziente Berechnung linearer Algebra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Test von&nbsp;Puget Systems&nbsp;zeigte bereits im August dieses Jahres \u00e4hnliche Auff\u00e4lligkeiten wie die von&nbsp;Ned Flanders&nbsp;in Matlab aufgezeigten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">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!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sammelthread im ComputerBase Forum<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Da in K\u00fcrze mit Benchmarks und Ergebnissen zu weiteren betroffenen Programmen zu rechnen ist, haben die Forenmitglieder&nbsp;ZeroStrat&nbsp;und erneut&nbsp;Ned Flanders&nbsp;einen Sammelthread&nbsp;dazu ins Leben gerufen.&nbsp;ZeroStrat&nbsp;selbst hat mittlerweile bereits Ergebnisse f\u00fcr einen AMD Ryzen 9 3900X vorlegen k\u00f6nnen, welche die bisherigen Ergebnisse von&nbsp;Ned Flanders&nbsp;best\u00e4tigen. Die beiden rufen die Community dazu auf, sich zu beteiligen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Programmbibliothek&nbsp;Math Kernel Library&nbsp;von Intel gilt f\u00fcr AMD Ryzen schlecht optimiert und notorisch langsam. Dies untermauert ein Workaround des Community-Mitglieds&nbsp;Ned Flanders&nbsp;f\u00fcr das Programm&nbsp;Matlab, das in der Wissenschaft f\u00fcr numerische Berechnungen genutzt wird. Mit dem \u201eTrick\u201c rechnet AMD Ryzen erheblich schneller. Workaround erzwingt AVX2 auf AMD Ryzen Unter dem Titel \u201eHow-To force Matlab to use a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[64,63],"class_list":["post-118","post","type-post","status-publish","format-standard","hentry","category-elektronisches-zubehor","tag-amd-ryzen","tag-intel-mkl"],"_links":{"self":[{"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=\/wp\/v2\/posts\/118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=118"}],"version-history":[{"count":1,"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":119,"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=\/wp\/v2\/posts\/118\/revisions\/119"}],"wp:attachment":[{"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.batteriewelt.com\/akkublog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}