Verwendet PETSc jemals LAPACK-Bibliotheken für die Mathematik mit geringer Matrix?

10

Beeinträchtigt das Kompilieren von PETSc mit einer externen BLAS / LAPACK-Bibliothek die Leistung auf dünn besetzten Matrizen erheblich oder werden diese Bibliotheken nur für die Mathematik mit dichter Matrix verwendet?

Dan
quelle
Sie können LU zur Vorkonditionierung verwenden.
stali

Antworten:

10

PETSc verwendet BLAS für einige Vektorprimitive, diese sind jedoch im Allgemeinen durch die Speicherbandbreite begrenzt und es gibt keine großen Unterschiede bei der "Optimierung", so dass dies tendenziell keinen großen Leistungsunterschied bewirkt.

Es verwendet Lapack auch für einige Analysen wie Lanczos- oder Arnoldi-Schätzungen von Eigenwerten und Singularwerten, die jedoch im Allgemeinen nicht leistungsabhängig sind.

Dichte "Level 3" -Operationen treten im Allgemeinen nur in einem leistungsabhängigen Kontext auf, wenn spärliche Direktlöser aus Bibliotheken von Drittanbietern (z. B. MUMPS, SuperLU, UMFPACK) verwendet werden. In diesem Fall führt das Füllen schließlich zu dichten Problemen, die groß genug sind, um davon zu profitieren BLAS anrufen.

Wenn Sie sich auf diese spärlichen direkten Löser verlassen, die bei großen Problemen angewendet werden, lohnt es sich, mit einer optimierten BLAS-Implementierung zu arbeiten, da dies sonst kaum einen Unterschied macht.

Jed Brown
quelle
Jed, wie verwendet PETSc LAPACK für die Schätzung von Eigen- / Singularwerten bei verteilten Matrizen? Ist es dann blockweise Routine oder ScaLAPACK?
Alexander
Die Arnoldi-Iteration erzeugt eine Hessenberg-Matrix mit einer Dimension, die der Anzahl der Iterationen entspricht (z. B. 30 oder 100). Die Eigen- oder Singularwerte der Hessenberg-Matrix werden bei jedem Prozess mit LAPACK redundant berechnet. Dies ist viel schneller als der Versuch, dies parallel zu tun, da die Größen klein sind und die Daten bereits redundant verteilt sind. Ähnliches gilt für Lanczos.
Jed Brown