Existe algum pacote de matriz esparsa aritmética quádrupla?

10

Estou trabalhando em um sistema de equações linear esparso grande e mal condicionado. Quero usar aritmética duplo-duplo ou aritmético quad-duplo para resolvê-los. Eu sei que existe um pacote chamado MPACK desenvolvido por Nakata, Maho, que pode executar cálculos algébricos lineares numéricos sob aritmética quádrupla. No entanto, ele é projetado para matriz densa, não matriz esparsa. Você sabe se existe algum pacote de matriz esparsa aritmética quádrupla?

Hanyu Ye
fonte
Com que tipo de matrizes você está trabalhando? É simétrico, hermitiano, definitivo positivo? Deseja fazer uma LU esparsa ou usar métodos iterativos?
Victor Liu

Respostas:

3

A partir da versão 3.2 , o PETSc suporta cálculos esparsos de precisão quádrupla no gcc / gfortran 4.6 e mais recentes.

Você precisará de um BLAS e LAPACK de precisão quádrupla, que o PETSc pode fornecer a você (juntamente com o suporte a quádruplos) com o seguinte comando de configuração (parcial):

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

Consulte as Perguntas frequentes para obter mais informações.

Além disso, concordo com o nOOb , se possível, tente regularizar o sistema antes de mudar para a precisão quádrupla.

Aron Ahmadia
fonte
11
Isso é precisão quad (real de 128 bits), não quad-double (real de 256 bits). Dito isso, a precisão quad é geralmente suficiente para entender os problemas de estabilidade encontrados com precisão dupla, e geralmente você deseja dimensionar o sistema e discretizar para que a precisão dupla seja suficiente para a produção.
Jed Brown
2

Sistemas mal condicionados são melhor resolvidos por regularização do que aumentando a precisão numérica. Procure por "regularização incorreta" para os detalhes sangrentos.

n00b
fonte
2

Eu poderia dar uma chance à biblioteca Trilinos. Eles modelaram bibliotecas de matriz esparsas sob o Tpetra (que deve substituir o Epetra, sua biblioteca de matriz esparsa original). Você pode modelar double, complex, quad, etc, e eles têm possivelmente a maior seleção de solucionadores (diretos e iterativos) ao lado do PETSc.

Edit: depois de ler os comentários, a utilidade imediata do Tpetra parece ser um pouco questionável em termos de precisão quad-wrt ...

Jesse Chan
fonte
Infelizmente, a maioria dos solucionadores ainda não trabalha com o Tpetra :-(
Wolfgang Bangerth
Isso é lamentável. Eu estava esperançoso, mas sem saber até que ponto o desenvolvimento do Tpetra foi (daí o "suposto substituir o Epetra": P). Eu pensei que pelo menos a biblioteca Belos (ou seja, os resolvedores Trilinos não baseados em wrappers em torno de códigos de terceiros) suportavam o Tpetra?
precisa saber é o seguinte
Eu acho que há um Belos2. Com certeza, o projeto Trilinos está colocando seus recursos atrás da Tpetra e será o pacote padrão no futuro. Eu acho que eles ainda não estão lá ainda.
Wolfgang Bangerth
Eu não estou ciente de nem mesmo __float128ser apoiada por Tpetra, muito menos quad-double. O Tpetra não é autônomo e nem todo cabeçalho, e mesmo que fosse, coisas como std::complexapenas funcionam com floate double.
Jed Brown