Muszę rozwiązać ten sam rzadki układ liniowy (300 x 300 do 1000 x 1000) z wieloma prawymi bokami (300 do 1000). Oprócz tego pierwszego problemu chciałbym również rozwiązać różne systemy, ale z tymi samymi niezerowymi elementami (tylko różne wartości), to znaczy wiele rzadkich systemów o stałym wzorcu rzadkości. Moje macierze są nieokreślone.
Wydajność faktoryzacji i inicjalizacji nie jest ważna, ale wydajność etapu rozwiązywania jest. Obecnie zastanawiam się nad PaStiX lub Umfpack i prawdopodobnie będę bawić się ze Petsc (który obsługuje oba solver). Czy istnieją biblioteki zdolne do korzystania z moich konkretnych potrzeb (wektoryzacja, wielowątkowość) lub czy powinienem polegać na ogólnych rozwiązaniach, i może zmodyfikować je nieco dla moich potrzeb?
Co jeśli rzadka matryca jest większa, do ?
źródło
W swoim stwierdzeniu problemu nie jest całkiem jasne, kiedy mówimy o „tych samych niezerowych elementach (tylko różnych wartościach)”. Czy mówisz, że macierz ma stały wzorzec rzadkości, ale rzeczywiste wartości się zmieniają? A może mówisz, że matryca jest w rzeczywistości stała?
W przypadku wielu prawych stron i układów równań tej wielkości metody iteracyjne zwykle nie są tego warte.
Wszystkie wspomniane pakiety oferują metody bezpośredniej faktoryzacji (chociaż PetSc jest znany głównie z iteracyjnych solverów). Jednak twoje systemy są tak małe, że jest mało prawdopodobne, aby można było uzyskać znaczne równoległe przyspieszenia, szczególnie w środowisku pamięci rozproszonej.
Sugeruję użycie Umfpack do tego zadania - PaStix i PetSc są przesadzone.
źródło