Existe-t-il un package matriciel arithmétique quadruple double?


10

Je travaille sur un grand système d'équations linéaire clairsemé et mal conditionné. Je veux utiliser l'arithmétique double-double ou l'arithmétique quad-double pour les résoudre. Je sais qu'il existe un package nommé MPACK développé par Nakata, Maho, qui peut effectuer des calculs algébriques linéaires numériques sous arithmétique quadruple double. Cependant, il est conçu pour une matrice dense, pas une matrice clairsemée. Savez-vous s'il existe un package matriciel arithmétique quadruple double?


Avec quel type de matrices travaillez-vous? Est-ce symétrique, hermitien, positif défini? Voulez-vous faire une LU clairsemée ou utiliser des méthodes itératives?
Victor Liu

Réponses:


3

À partir de la version 3.2 , PETSc prend en charge les calculs de précision quadruple clairsemés sur gcc / gfortran 4.6 et plus récent.

Vous aurez besoin d'un BLAS et d'un LAPACK à quadruple précision, que PETSc peut vous fournir (avec le support du quad) avec la commande de configuration (partielle) suivante:

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

Voir la FAQ pour un peu plus d'informations.

De plus, je suis d'accord avec nOOb , si possible, essayez de régulariser le système avant de passer en quad-précision.


1
Il s'agit d'une précision quadruple (réels 128 bits), et non quadruple (réels 256 bits). Cela dit, la précision quadruple est généralement suffisante pour comprendre les problèmes de stabilité rencontrés avec la double précision, et vous voulez généralement mettre à l'échelle le système et discrétiser de sorte que la double précision soit suffisante pour la production.
Jed Brown

2

Les systèmes mal conditionnés sont mieux résolus par la régularisation qu'en augmentant la précision numérique. Recherchez "régularisation mal posée" pour les détails sanglants.


2

Je pourrais essayer la bibliothèque Trilinos. Ils ont des bibliothèques de matrice clairsemée sous Tpetra (qui est censé remplacer Epetra, leur bibliothèque de matrice clairsemée originale). Vous pouvez créer des modèles doubles, complexes, quadruples, etc., et ils ont probablement la plus grande sélection de solveurs (directs et itératifs) à côté de PETSc.

Edit: après lecture des commentaires, l'utilité immédiate de Tpetra semble être un peu douteuse par rapport à la précision quad ...


La majorité des solveurs ne fonctionnent pas encore avec Tpetra, malheureusement :-(
Wolfgang Bangerth

C'est malheureux. J'avais bon espoir mais je ne savais pas jusqu'où le développement de Tpetra était allé (d'où le "supposé remplacer Epetra": P). Je pensais qu'au moins la bibliothèque Belos (c'est-à-dire les solveurs Trilinos non basés sur des wrappers autour de codes tiers) supportait Tpetra?
Jesse Chan

Je pense qu'il y a un Belos2. Bien sûr, le projet Trilinos met ses ressources derrière Tpetra et ce sera le package standard à l'avenir. Je pense qu'ils ne sont pas encore tout à fait là, cependant.
Wolfgang Bangerth

Je ne suis même pas conscient d' __float128être soutenu par Tpetra, et encore moins quad-double. Tpetra n'est pas autonome et pas entièrement en-tête, et même si c'était le cas, des choses comme std::complexne fonctionnent qu'avec floatet double.
Jed Brown

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.