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?
linear-algebra
libraries
performance
intel-mkl
Stefano Borini
quelle
quelle
Antworten:
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 .
quelle
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.
quelle
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.
quelle
Vorherige Antworten auf diese Frage haben die meisten wichtigen Punkte abgedeckt, aber ich möchte diesbezüglich einen Kommentar hinzufügen:
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:
Vollständige Offenlegung: Ich arbeite für Intel.
quelle
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.
quelle