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?


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.


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.


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 ...


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.