Aritmética de coma flotante de mayor precisión en PDE numérica

9

Tengo la impresión, de recursos muy diferentes y de conversaciones con investigadores, de que existe una demanda creciente de cálculos de alta precisión en ecuaciones diferenciales parciales numéricas. Aquí, la alta precisión significa más precisión que solo la doble precisión estándar de 64 bits.

Me pregunto sobre el estado del arte de este tema. A modo de comparación, existen comunidades en PDE numérica que se dirigen específicamente, por ejemplo, a métodos multinúcleo, paralelización a gran escala o computación con GPU. Me pregunto si existe una comunidad similar o si está creciendo para métodos de alta precisión en PDE numérica, y estaría particularmente interesado (y este es el punto real de la pregunta) en documentos introductorios o de encuestas sobre alta precisión, que también dan una impresión de la relevancia real del tema.

shuhalo
fuente

Respuestas:

16

La discreción de las PDE continuas generalmente comete muchos más errores que la precisión finita. Me parece que alrededor del 90% de las personas que solicitan una mayor precisión simplemente han sido flojas con la formulación del problema y están tratando de resolver un problema utilizando escalas pobres, malas discretizaciones o modelos continuos malos. El 10% restante puede tener sistemas justificadamente mal acondicionados para los cuales una mayor precisión realmente tiene sentido. Incluso en esos casos, utilizamos principalmente la precisión cuádruple como herramienta de depuración (especialmente en combinación con métodos que utilizan derivados de Frechet diferenciados finitos, y para investigar la causa de espacios nulos numéricos "espurios") o localmente para una operación muy sensible en lugar de en el Gran escala para la producción.

GCC ha proporcionado __float128desde la versión 4.6, por lo que es muy fácil de probar. (Las implementaciones anteriores generalmente eran mucho más intrusivas y menos portátiles). PETSc ha sido compatible --with-precision=__float128desde la versión 3.2, por lo que es solo una cuestión de recompilación.

Jed Brown
fuente
Derecha. Y Fortran tiene real (dp) donde se puede configurar dp = 16 (para gfortran) para obtener precisión cuádruple, por lo que también es muy fácil de probar.
Ondřej Čertík
9

En los 15 años que hemos proporcionado el software FEM en la forma del proyecto deal.II (http://www.dealii.org/), no creo que alguna vez hayamos tenido una solicitud genuina para resolver PDE para Mayor precisión que la doble precisión. La razón es como Jed sugiere en la otra respuesta: el error que uno comete al discretizar el PDE es mucho mayor que los 16 dígitos de precisión que se obtienen de la aritmética de coma flotante de doble precisión. Por lo tanto, tendría que tener una malla increíblemente fina para llegar al punto donde necesita más precisión en la aritmética para afectar el error general.

Creo que en realidad lo contrario es cierto: las personas están pensando (y trabajando) en lo que sucede cuando, por ejemplo, usas precisión única para almacenar los elementos de la matriz o de los preacondicionadores. En general, esto no reduce significativamente su precisión, pero aumenta el rendimiento en aproximadamente un factor de dos porque necesita tener solo la mitad de los datos de la memoria en el procesador.

Entonces, mi sensación es que la precisión cuádruple (o incluso más alta) es algo que puede ser relevante para la comunidad de solucionadores de ODE pero no para la comunidad de PDE.

Wolfgang Bangerth
fuente