Leistungsunterschiede zwischen ATLAS und MKL?

31

ATLAS ist ein kostenloser BLAS / LAPACK-Ersatz, der sich beim Kompilieren automatisch an die Maschine anpasst. MKL ist die von Intel gelieferte kommerzielle Bibliothek. Sind diese beiden Bibliotheken in Bezug auf die Leistung vergleichbar oder hat MKL bei einigen Aufgaben die Oberhand? Wenn ja, welche?

Stefano Borini
quelle
4
Nun gibt es auch OpenBLAS . Sehen Sie den Benchmark gegen MKL auf Sandybridge .
Mark Mikofski

Antworten:

18

MKL (von Intel) ist für Intel-Prozessoren optimiert und hat dort wahrscheinlich in vielen Fällen die "Oberhand". Es ist aber auch "berühmt" für die Wahl der "schlechtesten" Codepfade für AMD-Prozessoren, wie hier beschrieben .

Tommy
quelle
12

BLAS ist nicht monlithic. BLAS1 und BLAS2 haben eine begrenzte Speicherbandbreite, und Sie können nicht viel tun, um sie über das Offensichtliche hinaus zu beschleunigen (Loop-Unrolling, Cache-Blockierung für Stufe 2). BLAS3 ist interessanter und der prototypische Benchmark ist hier die Matrix-Matrix-Multiplikation. Meines Wissens war GOTOBlas hier immer der klare Gewinner, siehe zum Beispiel diesen Vergleich oder diesen und diese Rechtfertigung .

Es ist jetzt Jahre später und wir haben das BLIS-Projekt . Es ist die beste kostenlose Alternative zu MKL.

Matt Knepley
quelle
4
Matt ist richtig, aber die GotoBLAS ist nicht mehr in der Entwicklung. Es funktioniert für einige moderne Prozessoren immer noch ziemlich gut, aber die MKL wird es für DGEMM auf zukünftigen Prozessoren sicherlich übertreffen, wenn dies nicht bereits der Fall ist. Wir haben es zum Beispiel nicht auf Westmere getestet, aber es würde mich nicht wundern, wenn GotoBLAS bereits verloren hat.
Bill Barth
2
Dr. Goto wurde von M $ gekauft. Traurigkeit. . .
meawoppl
2
OpenBLAS ist das Open Source-Projekt, das von GotoBLAS gespalten wurde. github.com/xianyi/OpenBLAS
ShadowWarrior
Goto arbeitet jetzt an MKL. Keine Trauer mehr :-)
Jeff
6

Profil, spekuliere nicht! (Funktioniert auch als "Benchmark, spekulieren Sie nicht!" )

Es gibt nichts generic man sagen kann, es hängt stark von den Aufgaben, die Sie durchführen möchten (BLAS 1/2/3, zum Beispiel) und die Hardware Sie sind auf (natürlich, die Intel MKL nicht auf ARM-Prozessoren laufen, für Beispiel, aber auch bei Intel-Prozessoren sind Leistungsunterschiede zu erwarten.


Eine weitere erwähnenswerte Sache ist, dass AMD auch mathematische Bibliotheken anbietet, die auf ihre Prozessoren abgestimmt sind, die AMD Core Math Library . Es ist nicht so funktionsreich wie Intels MKL, aber es BLAS enthält.

F'x
quelle
Wahr. Es gibt viele anekdotische Beweise (und tatsächliche Profilerstellung), um die anderen Antworten hier zu belegen (wie durch die Links belegt). Ihr Kilometerstand kann jedoch variieren, und es ist immer hilfreich, ein Profil zu erstellen, um zu wissen, dass Sie Recht haben.
Geoff Oxberry
1
Es ist jedoch ärgerlich, sich zu profilieren, da die MKL 499 US-Dollar beträgt. Sie bieten jedoch eine einmonatige Testversion an
Lyndon White
@LyndonWeiß ist das noch der Fall? Die Download-Seite scheint frei zu sein
Luciano
Ja, ich glaube, es ist jetzt kostenlos, ich sehe viele Leute, die es jetzt benutzen.
Lyndon White
6

Vorherige Antworten auf diese Frage haben die meisten wichtigen Punkte abgedeckt, aber ich möchte diesbezüglich einen Kommentar hinzufügen:

hat MKL bei einigen Aufgaben die Oberhand?

Das MKL-Team ist in der einzigartigen Lage, Informationen über zukünftige Intel-Befehlssätze und deren Implementierung in bestimmten Prozessoren zu erhalten. Darüber hinaus haben sie Zugriff auf proprietäre Prozessorsimulatoren und Vorproduktionshardware, die niemand außerhalb von Intel verwenden kann. Somit hat MKL die Oberhand in Bezug auf den Wissensstand über zukünftige Produkte und wann sie dieses Wissen erhalten. Daher sollte es nicht allzu überraschend sein, wenn sie zumindest zu Beginn der Lebensdauer eines Produkts mit neuen Funktionen bessere Implementierungen des BLAS als alle anderen Produkte ermöglichen.

Auf der anderen Seite war Intel ziemlich offen über den AVX-512-Befehlssatz und stellte den Intel® Software Development Emulator (SDE) zur Verfügung, mit dem Entwickler AVX-512-Befehle auf Prozessoren emulieren können, die diese nicht von Haus aus unterstützen. Aus diesem Grund ist es nicht verwunderlich, wenn Intel-Prozessoren, die AVX-512 bereits zu einem frühen Zeitpunkt im Leben dieser Produkte unterstützen, hochwertige Open-Source-Implementierungen des BLAS zur Verfügung stehen.

Wie viel Unterschied es macht, detaillierte Informationen über einen bestimmten Prozessor im Vergleich zu den Grundlagen dichter linearer Algebra-Algorithmen zu haben, ist natürlich nicht vollständig geklärt. Das folgende Zitat spricht dieses Problem besser an, als ich es kann:

In der Theorie gibt es keinen Unterschied zwischen Theorie und Praxis. Aber in der Praxis gibt es.

Vollständige Offenlegung: Ich arbeite für Intel.

Jeff
quelle
Gibt es eine Chance, dass MKL Open Source ist?
Royi
Für welchen Zweck? MKL ist schon frei wie im Bier. Das Lesen des Quellcodes von BLIS hat einen weitaus höheren pädagogischen Wert. Wenn Sie die Assembly lesen möchten, versuchen Sie es mit OpenBLAS.
Jeff
1

Ich denke, dass der Hauptunterschied zwischen Hersteller-BLAS-Bibliotheken und Open Source-BLAS-Bibliotheken die Zeit ist, die Open Source benötigt, um die neuesten Hardwarefunktionen zu unterstützen.

Da BLAS weit verbreitet ist, liegt es im Interesse des Herstellers, die neuesten Hardwarefunktionen zu unterstützen. Betrachten wir zum Beispiel Intel AVX Vektor - Erweiterungen , die mit dem „Sandbrücke“ -Prozessor auf Jan 2011 MKL hatte AVX - Unterstützung , noch bevor der CPU vorhanden war eingeführt wurden , aber es war erst vor kurzem , dass ATLAS (Ende 2011) für AVX Rollout Unterstützung gestartet .

Wenn Ihre Anwendung wirklich Leistung benötigt und bevor Sie mit dem Benchmarking verschiedener BLAS-Bibliotheken beginnen oder mit der Optimierung beginnen, sollten Sie Ihre Anwendung profilieren. Es ist üblich, dass die menschliche Intuition kein sehr effektiver Profiler-Prädiktor ist, zumindest weiß ich, dass meiner nicht so ist! Anstatt also Zeit mit zufälligen Optimierungen zu verbringen, profilieren Sie Ihre Anwendung und gehen Sie systematisch jeden Engpass an.

fcruz
quelle