Arithmétique à virgule flottante de haute précision en PDE numérique


9

J'ai l'impression, à partir de ressources très différentes et de discussions avec des chercheurs, qu'il existe une demande croissante de calculs de haute précision dans les équations aux dérivées partielles numériques. Ici, la haute précision signifie plus de précision que la double précision 64 bits standard.

Je m'interroge sur l'état de l'art de ce sujet. A titre de comparaison, il existe des communautés dans les PDE numériques qui ciblent spécifiquement, par exemple, les méthodes multicœurs, la parallélisation à grande échelle ou le calcul GPU. Je me demande si une communauté similaire existe ou se développe pour des méthodes de haute précision en PDE numérique, et je serais particulièrement intéressé (et c'est le vrai point de la question) dans des documents d'introduction ou d'enquête sur la haute précision, qui donnent également une impression de la pertinence réelle du sujet.

Réponses:


16

La discrétisation des PDE du continuum commet généralement beaucoup plus d'erreurs que la précision finie. Je trouve qu'environ 90% des personnes qui demandent une plus grande précision viennent d'être paresseuses avec la formulation des problèmes et essaient de résoudre un problème en utilisant une mauvaise mise à l'échelle, de mauvaises discrétisations ou une mauvaise modélisation de continuum. Les 10% restants peuvent avoir des systèmes à juste titre mal conditionnés pour lesquels une précision accrue a vraiment du sens. Même dans ces cas, nous utilisons principalement la précision quadruple comme outil de débogage (en particulier en conjonction avec des méthodes utilisant des dérivés de Frechet différenciés finis, et pour étudier la cause des espaces nuls numériques "parasites") ou localement pour une opération très sensible plutôt que dans le grande échelle pour la production.

GCC a fourni __float128depuis la version 4.6, il est donc très facile d'essayer. (Les implémentations antérieures étaient généralement beaucoup plus intrusives et moins portables.) PETSc est pris en charge --with-precision=__float128depuis la version 3.2, donc c'est juste une question de recompilation.


Droite. Et Fortran a un réel (dp) où l'on peut définir dp = 16 (pour gfortran) pour obtenir une précision quadruple, il est donc très facile à essayer.
Ondřej Čertík

9

Au cours des 15 années pendant lesquelles nous avons fourni des logiciels FEM sous la forme du projet deal.II (http://www.dealii.org/), je ne pense pas que nous ayons jamais eu de véritable demande de résolution de PDE pour précision supérieure à la double précision. La raison est comme Jed le suggère dans l'autre réponse: l'erreur que l'on fait de discrétiser l'EDP est beaucoup plus grande que les 16 chiffres de précision que l'on obtient de l'arithmétique à virgule flottante double précision. Ainsi, vous devriez avoir un maillage incroyablement fin pour arriver au point où vous avez besoin de plus de précision dans l'arithmétique pour affecter l'erreur globale.

Je pense que le contraire est vrai: les gens pensent (et travaillent) à ce qui se passe lorsque vous, par exemple, utilisez la précision simple pour stocker les éléments de la matrice ou des préconditionneurs. En général, cela ne réduit pas de manière significative leur précision, mais cela augmente les performances d'environ un facteur deux, car vous n'avez besoin que de la moitié des données de la mémoire dans le processeur.

Donc, mon sentiment est que la précision quad (ou même supérieure) est quelque chose qui peut être pertinent pour la communauté de solveurs ODE mais pas pour la communauté PDE.

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.