Biblioteki do rozwiązywania rzadkich układów liniowych

21

Istnieje wiele różnych bibliotek, które rozwiązują rzadki liniowy układ równań, jednak trudno mi zrozumieć, jakie są różnice.

O ile wiem, istnieją trzy główne pakiety: Trilinos , PETSc i Intel MKL . Wszyscy mogą wykonywać rzadkie rozwiązania macierzy, wszystkie są szybkie (o ile mogę stwierdzić, nie byłem w stanie znaleźć solidnych testów porównawczych na żadnym z nich) i wszystkie są możliwe do równoległości. Nie mogę znaleźć różnic.

Jakie są zatem różnice między różnymi rzadkimi rozwiązaniami układów liniowych?

Andrew Spott
źródło

Odpowiedzi:

29

Istnieje wiele innych, wszystkie z różnymi celami i poglądami na problemy. To naprawdę zależy od tego, co próbujesz rozwiązać. Oto niepełna lista dostępnych pakietów. Dodaj więcej szczegółów.

Duże rozproszone pakiety solvera iteracyjnego

  • PETSc - pakiety skoncentrowane na metodach podprzestrzeni Kryłowa i łatwym przełączaniu między rozwiązaniami liniowymi. Znacznie lżejsza niż inne w tej kategorii.
  • Trilinos - duży zestaw pakietów przeznaczonych do aplikacji MES
  • Hypre - podobny do dwóch powyższych. Godne uwagi ze względu na bardzo dobre solvery z wieloma sieciami (które można pobrać z PETSc).

Pakiety równoległego solwera bezpośredniego

Pakiety Solver Direct Solver

  • SuiteSparse - UMFPACK to naprawdę dobry solver, ale istnieje wiele innych solverów specjalnego przeznaczenia.
  • Intel Math Kernel Library - wysokiej jakości biblioteka firmy Intel; ma również Parallel Iterative Solver (ale nic masowo równoległego).
  • Matrix Template Library - Generics może czasem znacznie przyspieszyć kod.

Interaktywne środowiska (więcej dla bardzo małych systemów)

Inne listy

aterrel
źródło
9

MKL nie wykonuje równoległego rozproszenia (np. MPI), a obsługa rzadkich solverów jest szczątkowa, na pewno nie na poziomie dwóch pozostałych. Obecnie istnieje tylko jeden znaczący punkt odniesienia: skalowalna wydajność produktu Sparse Matrix-Vector (SpMV). Ponieważ jest to ograniczona przepustowość pamięci, można to tylko zepsuć. Zarówno PETSc, jak i Trilinos mają się dobrze.

Prawdziwa różnica polega na tym, które środowisko programistyczne zwiększa wydajność.

Matt Knepley
źródło
Czyli sprowadza się to do tego, czy chcesz pracować w C lub C ++?
Andrew Spott,
To jest trochę bardziej otwarte. Z pewnością można wywoływać Trilinos lub PETSc z większości numerycznych języków obliczeniowych (C, Python, C ++ i Fortran to realne opcje i do pewnego stopnia MATLAB).
Aron Ahmadia
PETSc poprawnie obsługuje tablicę F90 :), a cały model obiektowy jest dostępny w Matlabie.
Matt Knepley
1
PETSc i Trilinos również do pewnego stopnia angażują różne społeczności. Być może powinieneś najpierw rozważyć rodzaj problemów, które chciałbyś rozwiązać, a jeśli jakieś istniejące przykłady podobnych problemów są już dostępne w obu zestawach narzędzi?
Aron Ahmadia
1
Polecam przyjrzeć się przykładom różnych projektów, a następnie podjąć decyzję. Jeśli masz konkretny przykład, który system byłby lepszy w przypadku problemu, byłoby to bardziej odpowiedź na pytanie. W przeciwnym razie rozpoczniemy wojnę religijną, która trwała przez moją karierę.
aterrel