Gibt es irgendwelche Vorteile beim Kompilieren von LAPACK aus dem Quellcode im Vergleich zur Installation des vorgefertigten Pakets von Ubuntu?

13

Ich weiß, dass ATLAS in der Lage ist, sich für die Maschine zu optimieren, auf der es kompiliert wird, und somit maximale Vorteile durch das Kompilieren aus dem Quellcode erzielt. Hat das Kompilieren von LAPACK aus dem Quellcode einen Vorteil? Es wäre viel einfacher, nur das vorgefertigte Paket zu installieren.

OSE
quelle
Es kann sich lohnen, diese Technik auszuprobieren , um herauszufinden, warum Zeit aufgewendet wird. Ich habe festgestellt, dass die Bibliotheksroutinen, wenn ich viel mit nicht großen Matrizen arbeite, mehr als die Hälfte ihrer Zeit damit verbringen, ihre Eingabezeichen-Flags und andere Eingabe-Klassifizierungen zu klassifizieren, sodass Sie möglicherweise eine Menge Geschwindigkeit erzielen, wenn Sie die Bibliothek erweitern mit ein paar gut ausgewählten handcodierten Routinen.
Mike Dunlavey

Antworten:

9

OpenBlas ist ziemlich schnell, so dass Sie es mit LAPACK verknüpfen können. Haben Sie eine vorkompilierte Version von LAPACK / BLAS von Ihrem CPU-Hersteller ausprobiert? Zum Beispiel AMD ACML (kostenlos) oder Intel MKL (kostenlos unter Linux für nicht kommerzielle und nicht akademische Zwecke)? Sie müssen lediglich die Installationsdatei entpacken und ausführen.

Meiner Meinung nach ist der einzige Vorteil der Verwendung von ATLAS, wenn Sie eine ungewöhnliche CPU verwenden. Verwenden Sie andernfalls den vom CPU-Hersteller. Es gibt auch nVIDIA CUDA und AMD OpenCL Versionen, die wirklich rocken.

BEARBEITEN: Denken Sie daran, dass Sie immer ein Ubuntu DEB-Paket aus dem Quellcode erstellen können, was normalerweise viel einfacher ist als das Kompilieren von Software aus dem Quellcode.

Elend
quelle
Ich glaube, ich gehe auf Ihren Vorschlag ein und installiere MKL. Auch danke für den Tipp zum Erstellen von DEB-Paketen, ich wusste nicht, dass das möglich war.
OSE
2
Denken Sie daran, dass Sie ld (Dynamic Libraries Linker, um diese Bibliotheken zu finden) konfigurieren müssen. BLAS und LAPACK von Intel MKL ist in der libmkl_rt.soDatei normalerweise verknüpft mit:-L/opt/intel/mkl/lib/intel64 -lmkl_rt
Misery
2
Man sollte darauf hinweisen, dass die nichtkommerzielle Lizenz von Intel mit jeder Veröffentlichung immer restriktiver wurde, bis zu dem Punkt, an dem sie jetzt deutlich machen, dass die akademische Nutzung nicht mehr davon abgedeckt wird, sobald Sie Geld für Ihre Forschung erhalten.
Christian Clason
Ja, das ist erwähnenswert. Man kann es jedoch kostenlos testen:] Und wenn es sich als nützlich erweist, ist es nicht das teuerste Ding der Welt.
Misery
7

Das Repository-Paket kann aufgrund der Kompilierung nicht sicher mit Threading verwendet werden. Ich habe den Fehler im Lapack-Forum gemeldet , aber es wird lange dauern , bis Problemumgehungen oder Lösungen in das Repository gelangen. Wenn Sie es selbst kompilieren, müssen Sie gfortran das "-frecursive" hinzufügen.

Victor Liu
quelle
6

Meiner Erfahrung nach ist die Verwendung von blas / lapack in den neuesten Ubuntu-Versionen die Verwendung der Openblas-Pakete.

Für das, was es wert ist, verwende ich meistens Blas / Lapack durch Python Numpy / Scipy, und die Verwendung von Openblas beschleunigt einen Teil der linearen Algebra um das 200-fache im Vergleich zur Standardeinstellung. Ich habe versucht, benutzerdefiniertes ATLAS zu verwenden, aber es war sehr schmerzhaft und hat nicht viel gegeben, wenn es zu einer Beschleunigung im Vergleich zu openblas kam, aber ich hätte es möglicherweise falsch gemacht.

Klipper
quelle