¿Hay algún paquete de matriz escasa aritmética cuádruple-doble?

10

Estoy trabajando en un gran sistema de ecuaciones lineales dispersas mal acondicionado. Quiero usar aritmética doble-doble o aritmética cuádruple-doble para resolverlos. Sé que hay un paquete llamado MPACK desarrollado por Nakata, Maho, que puede realizar cálculos algebraicos lineales numéricos bajo aritmética cuádruple-doble. Sin embargo, está diseñado para una matriz densa, no para una matriz dispersa. ¿Sabes si hay algún paquete de matriz escasa aritmética cuádruple-doble?

Hanyu Ye
fuente
¿Con qué tipo de matrices estás trabajando? ¿Es simétrico, hermitiano, positivo definido? ¿Desea hacer una LU escasa o utilizar métodos iterativos?
Victor Liu el

Respuestas:

3

A partir de la versión 3.2 , PETSc admite cálculos dispersos de precisión cuádruple en gcc / gfortran 4.6 y posteriores.

Necesitará un BLAS y LAPACK de precisión cuádruple, que PETSc puede proporcionarle (junto con soporte cuádruple) con el siguiente comando de configuración (parcial):

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

Consulte las preguntas frecuentes para obtener un poco más de información.

Además, estoy de acuerdo con nOOb , si es posible, intente regularizar el sistema antes de cambiar a precisión cuádruple.

Aron Ahmadia
fuente
1
Esto es precisión cuádruple (reales de 128 bits), no cuádruple doble (reales de 256 bits). Dicho esto, la precisión cuádruple suele ser suficiente para comprender los problemas de estabilidad que se encuentran con la precisión doble, y generalmente desea escalar el sistema y discretizar para que la precisión doble sea suficiente para la producción.
Jed Brown el
2

Los sistemas mal acondicionados se resuelven mejor mediante la regularización que aumentando la precisión numérica. Busque "regularización mal planteada" para los detalles sangrientos.

n00b
fuente
2

Podría probar la biblioteca Trilinos. Tienen plantillas de bibliotecas de matriz dispersa en Tpetra (que se supone que reemplaza a Epetra, su biblioteca de matriz dispersa original). Puede crear plantillas dobles, complejas, cuádruples, etc., y posiblemente tengan la mayor selección de solucionadores (tanto directos como iterativos) junto a PETSc.

Editar: después de leer los comentarios, la utilidad inmediata de Tpetra parece ser un poco cuestionable con precisión cuádruple ...

Jesse Chan
fuente
La mayoría de los solucionadores aún no trabajan con Tpetra, desafortunadamente :-(
Wolfgang Bangerth
Eso es lamentable. Tenía esperanzas pero no estaba seguro de cuán lejos ha llegado el desarrollo de Tpetra (de ahí el "se supone que debe reemplazar a Epetra": P). ¿Pensé que al menos la biblioteca de Belos (es decir, los solucionadores de Trilinos no basados ​​en envoltorios alrededor de códigos de terceros) admitía Tpetra?
Jesse Chan
Creo que hay un Belos2. Por supuesto, el proyecto Trilinos está poniendo sus recursos detrás de Tpetra y será el paquete estándar en el futuro. Sin embargo, creo que todavía no están allí.
Wolfgang Bangerth
No estoy al tanto de incluso __float128ser apoyado por Tpetra, y mucho menos cuádruple-doble. Tpetra no es independiente y no tiene todos los encabezados, e incluso si lo fuera, std::complexsolo funciona con floaty double.
Jed Brown el