Esistono pacchetti di matrici sparse aritmetiche quadruple?


10

Sto lavorando ad un sistema di equazioni lineari e sparse di grandi dimensioni. Voglio usare l'aritmetica doppio-doppio o l'aritmetica quad-doppio per risolverli. So che esiste un pacchetto chiamato MPACK sviluppato da Nakata, Maho, che può eseguire calcoli algebrici lineari numerici in aritmetica quadrupla. Tuttavia, è progettato per una matrice densa, non una matrice sparsa. Sai se esiste un pacchetto di matrici sparse aritmetiche quadruple?


Con che tipo di matrici stai lavorando? È simmetrico, eremitico, definito positivo? Vuoi fare una LU sparsa o usare metodi iterativi?
Victor Liu,

Risposte:


3

A partire dalla versione 3.2 , PETSc supporta calcoli sparsi di precisione quadrupla su gcc / gfortran 4.6 e versioni successive.

Avrai bisogno di un BLAS e LAPACK quad-precision, che PETSc può fornirti (insieme al supporto quad) con il seguente comando (parziale) di configurazione:

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

Consulta le FAQ per ulteriori informazioni.

Inoltre, sono d'accordo con nOOb , se possibile, provate a regolarizzare il sistema prima di passare alla quad-precisione.


1
Questa è la precisione quad (reals a 128 bit), non quad-double (reals a 256 bit). Detto questo, la precisione quadrupla è in genere sufficiente per comprendere i problemi di stabilità riscontrati con la doppia precisione e di solito si desidera ridimensionare il sistema e discretizzare in modo che la doppia precisione sia sufficiente per la produzione.
Jed Brown,

2

I sistemi mal condizionati vengono risolti meglio con la regolarizzazione piuttosto che aumentando la precisione numerica. Cerca "regolarizzazione mal posta" per i dettagli cruenti.


2

Potrei provare la biblioteca di Trilinos. Hanno modellato le librerie di matrici sparse sotto Tpetra (che dovrebbe sostituire Epetra, la loro libreria di matrici sparse originale). Puoi creare modelli doppi, complessi, quad, ecc. E possibilmente hanno la più grande selezione di solutori (sia diretti che iterativi) accanto a PETSc.

Modifica: dopo aver letto i commenti, l'utilità immediata di Tpetra sembra essere un po 'discutibile rispetto alla precisione quad ...


La maggior parte dei solutori non lavora ancora con Tpetra, sfortunatamente :-(
Wolfgang Bangerth,

È un peccato. Ero fiducioso ma non ero sicuro di quanto fosse andato lontano lo sviluppo di Tpetra (da qui il "supposto di sostituire Epetra": P). Pensavo che almeno la libreria Belos (ovvero i risolutori di Trilinos non basati su wrapper attorno a codici di terze parti) supportasse Tpetra?
Jesse Chan,

Penso che ci sia un Belos2. Di sicuro, il progetto Trilinos sta mettendo le proprie risorse dietro Tpetra e sarà il pacchetto standard in futuro. Penso che non siano ancora del tutto lì, comunque.
Wolfgang Bangerth,

Non sono a conoscenza nemmeno di __float128essere supportato da Tpetra, per non parlare del quadruplo. Tpetra non è autonomo e non è completamente intestazione, e anche se lo fosse, cose come std::complexfunzionano solo con floate double.
Jed Brown,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.