Gibt es ein Quad-Double-Arithmetik-Sparse-Matrix-Paket?


10

Ich arbeite an einem schlecht konditionierten großen, spärlichen linearen Gleichungssystem. Ich möchte Doppel-Doppel-Arithmetik oder Quad-Doppel-Arithmetik verwenden, um sie zu lösen. Ich weiß, dass es ein Paket namens MPACK gibt, das von Nakata, Maho, entwickelt wurde und numerische lineare algebraische Berechnungen unter Quad-Double-Arithmetik durchführen kann. Es ist jedoch für eine dichte Matrix ausgelegt, nicht für eine spärliche Matrix. Wissen Sie, ob es ein Quad-Double-Arithmetik-Sparse-Matrix-Paket gibt?


Mit welcher Art von Matrizen arbeiten Sie? Ist es symmetrisch, hermitisch, positiv definitiv? Möchten Sie eine spärliche LU erstellen oder iterative Methoden verwenden?
Victor Liu

Antworten:


3

Ab Version 3.2 unterstützt PETSc spärliche Berechnungen mit vierfacher Genauigkeit unter gcc / gfortran 4.6 und höher.

Sie benötigen BLAS und LAPACK mit vierfacher Genauigkeit, die PETSc Ihnen (zusammen mit der Quad-Unterstützung) mit dem folgenden (teilweisen) Konfigurationsbefehl zur Verfügung stellen kann:

./configure --with-precision=__float128 --download-f2cblaslapack

Weitere Informationen finden Sie in den FAQ .

Außerdem stimme ich nOOb zu , wenn möglich, versuchen Sie, das System zu regulieren, bevor Sie auf Quad-Präzision umschalten.


1
Dies ist Quad-Genauigkeit (128-Bit-Real), nicht Quad-Double (256-Bit-Real). Das heißt, Quad-Präzision ist normalerweise ausreichend, um Stabilitätsprobleme zu verstehen, die bei doppelter Präzision auftreten. In der Regel möchten Sie das System skalieren und diskretisieren, sodass doppelte Präzision für die Produktion ausreicht.
Jed Brown

2

Schlecht konditionierte Systeme lassen sich besser durch Regularisierung lösen als durch Erhöhung der numerischen Genauigkeit. Suchen Sie nach "Regularisierung schlecht gestellt" für die blutigen Details.


2

Ich könnte die Trilinos-Bibliothek ausprobieren. Sie haben Sparse-Matrix-Bibliotheken unter Tpetra (das Epetra, ihre ursprüngliche Sparse-Matrix-Bibliothek, ersetzen soll) als Vorlage verwendet. Sie können Double, Complex, Quad usw. vorlegen, und sie haben möglicherweise die größte Auswahl an Solvern (sowohl direkt als auch iterativ) neben PETSc.

Bearbeiten: Nach dem Lesen der Kommentare scheint die unmittelbare Nützlichkeit von Tpetra ein wenig fraglich in Bezug auf Quad-Präzision zu sein ...


Die meisten Löser arbeiten leider noch nicht mit Tpetra :-(
Wolfgang Bangerth

Das ist bedauerlich. Ich war hoffnungsvoll, aber nicht sicher, wie weit die Entwicklung von Tpetra fortgeschritten ist (daher das "soll Epetra ersetzen": P). Ich dachte zumindest, dass die Belos-Bibliothek (dh Trilinos-Löser, die nicht auf Wrappern für Codes von Drittanbietern basieren) Tpetra unterstützt?
Jesse Chan

Ich denke es gibt einen Belos2. Mit Sicherheit setzt das Trilinos-Projekt seine Ressourcen hinter Tpetra und es wird in Zukunft das Standardpaket sein. Ich denke, sie sind noch nicht ganz da.
Wolfgang Bangerth

Mir ist nicht einmal bewusst, __float128dass ich von Tpetra unterstützt werde, geschweige denn von Quad-Double. Tpetra ist nicht eigenständig und kein All-Header, und selbst wenn es so wäre, std::complexfunktionieren Dinge wie nur mit floatund double.
Jed Brown

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.