Bibliotheken zur Lösung spärlicher linearer Systeme

21

Es gibt eine Reihe verschiedener Bibliotheken, die ein spärliches lineares Gleichungssystem lösen. Ich finde es jedoch schwierig, die Unterschiede herauszufinden.

Soweit ich das beurteilen kann, gibt es drei Hauptpakete : Trilinos , PETSc und Intel MKL . Sie können alle spärliche Matrixlösungen ausführen, sie sind alle schnell (soweit ich das beurteilen kann, konnte ich keine soliden Benchmarks finden) und sie sind alle parallelisierbar. Was ich nicht finden kann, sind die Unterschiede.

Was sind also die Unterschiede zwischen den verschiedenen Solvern für dünn besetzte lineare Systeme?

Andrew Spott
quelle

Antworten:

29

Es gibt noch viel mehr, alle mit unterschiedlichen Zielen und Ansichten zu den Problemen. Es hängt wirklich davon ab, was Sie zu lösen versuchen. Hier ist eine unvollständige Liste der Pakete da draußen. Fühlen Sie sich frei, um weitere Details hinzuzufügen.

Große Distributed Iterative Solver-Pakete

  • PETSc - Pakete mit Schwerpunkt auf Krylov- Subraummethoden und einfachem Umschalten zwischen linearen Solvern. Viel leichter als andere in dieser Kategorie.
  • Trilinos - eine große Auswahl an Paketen für FEM-Anwendungen
  • Hypre - ähnlich wie die beiden oben. Bemerkenswert wegen seiner sehr guten Multigrid-Löser (die von PETSc heruntergeladen werden können).

Parallele Direktlöser-Pakete

Serielle Direct Solver-Pakete

Interaktive Umgebungen (mehr für sehr kleine Systeme)

Andere Listen

aterrel
quelle
9

MKL bietet keine verteilte Parallelität (zB MPI) und die Unterstützung für Sparse Solver ist rudimentär, definitiv nicht auf der Ebene der anderen beiden. Derzeit gibt es nur einen aussagekräftigen Benchmark: die skalierbare Leistung des Sparse Matrix-Vector-Produkts (SpMV). Da dies eine begrenzte Speicherbandbreite ist, können Sie es nur vermasseln. Sowohl PETSc als auch Trilinos machen das gut.

Der wahre Unterschied besteht darin, welche Programmierumgebung Sie produktiver macht.

Matt Knepley
quelle
Also läuft es so ziemlich darauf hinaus, ob Sie in C oder C ++ arbeiten wollen?
Andrew Spott
Es ist ein bisschen offener als das. Sie könnten Trilinos oder PETSc von den meisten numerischen Computersprachen aus aufrufen (C, Python, C ++ und Fortran sind alles mögliche Optionen und in gewissem Maße auch MATLAB).
Aron Ahmadia
PETSc führt die F90-Array-Behandlung korrekt durch :) und das gesamte Objektmodell ist in Matlab verfügbar.
Matt Knepley
1
PETSc und Trilinos engagieren sich zum Teil auch in unterschiedlichen Communities. Vielleicht sollten Sie sich zuerst überlegen, welche Art von Problemen Sie lösen möchten und ob bereits Beispiele für ähnliche Probleme in einem der beiden Toolkits vorhanden sind.
Aron Ahmadia
1
Ich würde empfehlen, sich die Beispiele der verschiedenen Projekte anzuschauen und dann zu entscheiden. Wenn Sie ein konkretes Beispiel dafür haben, welches System für ein Problem besser geeignet ist, ist dies eine eher beantwortbare Frage. Andernfalls werden wir nur den Religionskrieg beginnen, der während meiner Abschlusskarriere geführt hat.
Aterrel