Czy jest jakiś pakiet podwójnej arytmetycznej macierzy rzadkich?

10

Pracuję nad jakimś źle uwarunkowanym dużym rzadkim liniowym układem równań. Chcę użyć podwójnej podwójnej arytmetyki lub czterokrotnej podwójnej arytmetyki, aby je rozwiązać. Wiem, że istnieje pakiet o nazwie MPACK opracowany przez Nakata, Maho, który może wykonywać numeryczne obliczenia liniowe algebraiczne w oparciu o podwójną arytmetykę. Jest on jednak przeznaczony do gęstej matrycy, a nie do rzadkiej. Czy wiesz, czy istnieje pakiet podwójnej arytmetycznej macierzy rzadkich?

Hanyu Ye
źródło
Z jakim rodzajem macierzy pracujesz? Czy to symmetrc, Hermitian, pozytywnie określony? Czy chcesz zrobić rzadką jednostkę logiczną, czy zastosować metody iteracyjne?
Victor Liu,

Odpowiedzi:

3

Począwszy od wersji 3.2 , PETSc obsługuje rzadkie obliczenia czteroprecyzyjne na gcc / gfortran 4.6 i nowszych.

Będziesz potrzebował poczwórnej precyzji BLAS i LAPACK, które PETSc może ci dostarczyć (wraz z obsługą quadów) za pomocą następującego (częściowego) polecenia konfiguracji:

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

Zobacz często zadawane pytania, aby uzyskać więcej informacji.

Zgadzam się również z nOOb , jeśli to w ogóle możliwe, spróbuj uregulować system przed przejściem na quad-precyzję.

Aron Ahmadia
źródło
1
Jest to czterokrotnie precyzyjna (realia 128-bitowe), a nie czterokrotnie (realia 256-bitowe). To powiedziawszy, poczwórna precyzja zwykle wystarcza, aby zrozumieć problemy ze stabilnością występujące przy podwójnej precyzji, i zwykle chcesz skalować system i dyskretyzować, aby podwójna precyzja była wystarczająca do produkcji.
Jed Brown
2

Źle uwarunkowane systemy są lepiej rozwiązywane przez regularyzację niż przez zwiększenie precyzji liczbowej. Wyszukaj „regularyzację źle postawioną”, aby poznać szczegóły.

n00b
źródło
2

Mogę spróbować z biblioteką Trilinos. Posiadają szablony bibliotek macierzy rzadkich w Tpetrze (która ma zastąpić Epetrę, ich oryginalną bibliotekę macierzy rzadkich). Możesz szablonować podwójne, złożone, poczwórne itp., A obok PETSc mają prawdopodobnie największy wybór solverów (zarówno bezpośrednich, jak i iteracyjnych).

Edycja: po przeczytaniu komentarzy natychmiastowa przydatność Tpetry wydaje się nieco wątpliwa, a nie quad precyzja ...

Jesse Chan
źródło
Niestety większość solverów nie współpracuje z Tpetrą :-(
Wolfgang Bangerth,
To niefortunne. Miałem nadzieję, ale nie jestem pewien, jak daleko posunął się rozwój Tpetry (stąd „powinien zastąpić Epetrę”: P). Myślałem, że przynajmniej biblioteka Belos (tzn. Solvery Trilinos nie oparte na opakowaniach wokół kodów stron trzecich) obsługuje Tpetrę?
Jesse Chan,
Myślę, że jest Belos2. Na pewno projekt Trilinos stawia swoje zasoby za Tpetrą i będzie to standardowy pakiet w przyszłości. Myślę jednak, że jeszcze ich tam nie ma.
Wolfgang Bangerth,
Nie jestem nawet świadomy tego, __float128że wspiera mnie Tpetra, a co dopiero czterokrotność. Tpetra nie jest samodzielny i nie zawiera wszystkich nagłówków, a nawet gdyby tak było, rzeczy takie jak std::complexpraca tylko z floati double.
Jed Brown