!SOLVER¶
Sterowanie solverem
Wymagane dane sterujące.
Parametry¶
METHOD = Metoda rozwiązania (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Metoda bezpośrednia z wyjątkiem analizy kontaktowej (tylko przetwarzanie szeregowe) (obecnie niedostępna)
DIRECTmkl : Metoda bezpośrednia wykorzystująca Intel MKL
MUMPS : Metoda bezpośrednia wykorzystująca MUMPS
Po wybraniu metody bezpośredniej wiersze danych są ignorowane.
Metody iteracyjne dla problemów o 3 stopniach swobody obsługują wykonywanie wielowątkowe z OpenMP
PRECOND = Metoda prekondycjonowania dla solverów iteracyjnych (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Blokowy) SSOR (z porządkowaniem wielokolorowym tylko dla problemów o 3 stopniach swobody)
3 : (Blokowe) skalowanie diagonalne
5 : AMG wykorzystujące pakiet ML do prekondycjonowania wielosiatkowego
10 : Blokowy ILU(0)
11 : Blokowy ILU(1)
12 : Blokowy ILU(2)
22 : AMG wykorzystujące wbudowany w HEC-MW SA-AMG (AMG z wygładzonym agregowaniem)
10, 11 i 12 są dostępne tylko dla problemów o 3 stopniach swobody
22 jest dostępne tylko w kompilacjach z włączonym LAPACK
Dla wykonywania wielowątkowego OpenMP zalecane jest SSOR, skalowanie diagonalne, ML lub SA-AMG
ITERLOG = Czy zapisywać historię zbieżności solvera iteracyjnego (YES/NO)(Domyślnie: NO)
TIMELOG = Czy zapisywać czas obliczeń solvera (YES/NO/VERBOSE)(Domyślnie: NO)
LOGLEVEL = Poziom wyjścia informacji diagnostycznych prekondycjonera (liczba całkowita)(Domyślnie: bez wyjścia)
Określany niezależnie od ITERLOG i TIMELOG
Dla wartości 1 lub większej wyprowadzana jest struktura hierarchii i inne informacje o prekondycjonerach AMG (PRECOND=5,22)
Dla wartości 2 lub większej wyprowadzane są bardziej szczegółowe informacje (np. użycie pamięci)
USEJAD = Czy używać porządkowania dla procesorów wektorowych (YES/NO)(Domyślnie: NO)
Obowiązuje tylko wtedy, gdy dla problemu o 3 stopniach swobody używana jest metoda iteracyjna
SCALING = Czy skalować macierz tak, aby elementy diagonalne były równe 1 (YES/NO)(Domyślnie: NO)
Obowiązuje tylko wtedy, gdy dla problemu o 3 stopniach swobody używana jest metoda iteracyjna
DUMPTYPE = Format zrzutu macierzy (NONE, MM, CSR, BSR) (głównie do debugowania)
NONE : Bez zrzutu (domyślnie)
MM : Format Matrix Market
CSR : Format Compressed Sparse Row (CSR)
BSR : Blokowy format CSR
DUMPEXIT = Zakończ program natychmiast po zrzucie macierzy (YES/NO)(Domyślnie: NO)
MPCMETHOD = Metoda obsługi więzów wielopunktowych (1, 3)
1: Metoda kary (domyślna przy użyciu metody bezpośredniej)
3: Jawna eliminacja stopni swobody (domyślna przy użyciu metody iteracyjnej)
Metoda MPC-CG (2) została usunięta. Podanie 2 powoduje wyświetlenie ostrzeżenia i użycie metody domyślnej.
ESTCOND = Częstotliwość estymacji liczby uwarunkowania (eksperymentalne)
Estymuj liczbę uwarunkowania w każdym podanym interwale iteracji oraz na końcu iteracji
Po podaniu 0 estymacja nie jest wykonywana
RECOMPUTE_RESIDUAL = Częstotliwość ponownego obliczania wektora resztowego
Obowiązuje tylko wtedy, gdy dla METHOD podano CG, BiCGSTAB, GPBiCG lub PipeCG
Metody iteracyjne aktualizują wektor resztowy za pomocą zależności rekurencyjnej, przez co kumulują się błędy zaokrągleń
Po każdej podanej liczbie iteracji wektor resztowy jest ponownie obliczany jako {b}-[A]{x}
Po podaniu 0 używana jest wartość domyślna danej metody (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Po podaniu wartości ujemnej okresowe ponowne obliczanie nie jest wykonywane
Ponowne obliczenie w celu potwierdzenia zbieżności jest zawsze wykonywane po spełnieniu kryterium zbieżności, niezależnie od tego ustawienia
Zbyt krótki okres nie tylko zwiększa liczbę mnożeń macierz-wektor, lecz może także
pogorszyć samą zbieżność lub spowodować, że rozwiązanie przestanie być zbieżne
Po zmianie tego ustawienia z wartości domyślnej sprawdź historię zbieżności i końcową resztę względną
METHOD2 = Druga metoda rozwiązania (BiCGSTAB, GMRES, GPBiCG) (eksperymentalne)
Obowiązuje tylko wtedy, gdy dla METHOD podano CG
Jeśli CG jest rozbieżne, automatycznie przełącz na metodę dodatkową i kontynuuj rozwiązanie
Dla pozostałych parametrów i wierszy danych używane są te same wartości
CONTACT_ELIM = Określa, czy w analizie kontaktowej wykonywana jest eliminacja stopni swobody (0,1)
0: Wykonuj eliminację stopni swobody tylko przy użyciu metody iteracyjnej (domyślnie)
1: Zawsze wykonuj eliminację stopni swobody (również przy użyciu metody bezpośredniej)
** 2. i kolejne wiersze **
| Nazwa zmiennej | Typ | Opis |
|---|---|---|
| NITER | I | Liczba iteracji (domyślnie: 100) |
| iterPREmax | I | Liczba iteracji prekondycjonowania Additive Schwarz (domyślnie: 1) (Zalecana wartość: 1; 2 może być skuteczne w niektórych obliczeniach równoległych) |
| NREST | I | Rozmiar podprzestrzeni Kryłowa (domyślnie: 10) (Obowiązuje tylko wtedy, gdy jako metodę rozwiązania wybrano GMRES) |
| NCOLOR_IN | I | Docelowa liczba kolorów dla porządkowania wielokolorowego (domyślnie: 10) (Obowiązuje tylko wtedy, gdy liczba wątków OpenMP wynosi co najmniej 2) |
| RECYCLEPRE | I | Liczba ponownych użyć informacji o konfiguracji prekondycjonera (domyślnie: 3) (Obowiązuje tylko w analizie nieliniowej) |
| Nazwa zmiennej | Typ | Opis |
|---|---|---|
| RESID | R | Tolerancja zbieżności (domyślnie: 1.0e-8) |
| SIGMA_DIAG | R | Współczynnik skali stosowany do elementów diagonalnych podczas obliczania macierzy prekondycjonera (domyślnie: 1.0) (Jeśli przy prekondycjonowaniu ILU występuje dzielenie przez zero lub rozbieżność, problem może osiągnąć zbieżność po podaniu wartości większej niż 1.0) |
| SIGMA | R | Nieużywane (domyślnie: 0.0) |
Gdy PRECOND=5 (opcjonalnie)¶
Jeśli dla PRECOND podano wartość inną niż 5 lub 22, 4. wiersz jest ignorowany.
(4. wiersz) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| Nazwa zmiennej | Typ | Opis |
|---|---|---|
| ML_CoarseSolver | I | Solver siatki zgrubnej dla ML (1: użyj wygładzacza, 2: KLU (szeregowa metoda bezpośrednia), 3: MUMPS (równoległa metoda bezpośrednia)) (domyślnie: 1) (Zalecane: 3 lub 2 dla trudnych problemów, 1 dla zwykłych problemów) |
| ML_Smoother | I | Wygładzacz ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (domyślnie: 1) (Zalecane: 1) |
| ML_MGCycle | I | Cykl wielosiatkowy ML (1: cykl V, 2: cykl W, 3: pełny cykl V) (domyślnie: 1) (Zalecane: 2 dla trudnych problemów, 1 dla zwykłych problemów) |
| ML_MaxLevels | I | Maksymalna liczba poziomów ML (domyślnie: 10) (Dla szczególnie trudnych problemów użyj bezpośredniego solvera siatki zgrubnej i 2 poziomów (lub 3, jeśli pamięć jest niewystarczająca); dla zwykłych problemów zalecane jest 10) |
| ML_CoarseningScheme | I | Schemat zgrubiania ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (domyślnie: 1) (Zalecane: 1 lub 5) |
| ML_NumSweep | I | Liczba przebiegów wygładzacza ML (stopień wielomianu dla Chebysheva) (domyślnie: 2) (Zalecane: 2 dla Chebysheva, 1 dla SymBlockGaussSeidel) |
Gdy PRECOND=22 (opcjonalnie)¶
Jeśli dla PRECOND podano wartość inną niż 22, 5. wiersz jest ignorowany. Zarówno 4., jak i 5. wiersz można pominąć w całości; można też pominąć końcowe pozycje każdego z nich. Dla każdej pozycji o wartości 0 używana jest wartość domyślna.
Pozycje od 1 do 7 w 4. wierszu mają taki sam układ jak w wierszu opcji PRECOND=5 (ML), dlatego wiersz opcji ML można wykorzystać bez zmian. Pozycje od 8 do 10 są specyficzne dla SA-AMG.
(4. wiersz) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (nieużywane), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (nieużywane)
| Nazwa zmiennej | Typ | Opis |
|---|---|---|
| SA_CoarseSolver | I | Solver siatki zgrubnej (0: automatycznie, 1: użyj wygładzacza, 2: bezpośrednia metoda dla macierzy gęstej, 3: MUMPS (równoległa metoda bezpośrednia)) (domyślnie: 0) (W trybie automatycznym MUMPS jest używany w kompilacjach z włączonym MUMPS; w pozostałych przypadkach używana jest bezpośrednia metoda dla macierzy gęstej) |
| SA_Smoother | I | Wygładzacz (0 lub 1: Chebyshev) (domyślnie: 0) (Obsługiwany jest tylko Chebyshev. Podanie innej wartości powoduje wyświetlenie ostrzeżenia i użycie Chebysheva) |
| SA_MGCycle | I | Cykl wielosiatkowy (0: domyślny (cykl W), 1: cykl V, 2: cykl W) (domyślnie: 0) (Pełny cykl V nie jest obsługiwany) |
| SA_MaxLevels | I | Maksymalna liczba poziomów (domyślnie: 20) |
| (nieużywane) | I | Pozycja odpowiadająca schematowi zgrubiania ML. Ponieważ SA-AMG zawsze wykorzystuje agregację niesprzężoną, wartość różna od zera powoduje wyświetlenie ostrzeżenia i jest ignorowana |
| SA_ChebyDegree | I | Stopień wielomianu wygładzacza Chebysheva (domyślnie: 2) |
| SA_CoarseSize | I | Rozmiar odcięcia siatki zgrubnej (domyślnie: 50000, gdy MUMPS jest solverem siatki zgrubnej; w przeciwnym razie 100) |
| SA_MaxAggSize | I | Maksymalny rozmiar agregatu (domyślnie: 96) |
| SA_GalerkinLowMem | I | Metoda obliczania macierzy siatki zgrubnej (0: normalna (priorytet szybkości), wartość dodatnia: oszczędzanie pamięci) (domyślnie: 0) (Podaj wartość dodatnią, jeśli podczas konfiguracji brakuje pamięci) |
| (nieużywane) | I | Zarezerwowane dla przyszłych rozszerzeń |
Piąty wiersz jest przeznaczony wyłącznie dla SA-AMG i nie jest odczytywany przez ML.
(5. wiersz) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Nazwa zmiennej | Typ | Opis |
|---|---|---|
| SA_Theta | R | Próg określania silnych połączeń (domyślnie: 0.0) (Dla 0.0 niezerowa struktura macierzy jest używana bezpośrednio jako graf) |
| SA_ChebyAlpha | R | Współczynnik określający dolną granicę przedziału wartości własnych, na którym działa wygładzacz Chebysheva (domyślnie: 20.0) |
| SA_Safety | R | Współczynnik bezpieczeństwa stosowany do oszacowanej największej wartości własnej (domyślnie: 1.1) |
| SA_TaperK | R | Współczynnik K stopniowania zgrubiania (domyślnie: 100) (Od poziomu 2 zgrubianie jest łagodniejsze, aby pozostało co najmniej około K agregatów. Wartość ujemna wyłącza stopniowanie) |
| SA_AggOrder | R | Kolejność przechodzenia agregacji (0: domyślna (kolejność BFS), 1: kolejność BFS, 2: kolejność według skrótu numerów węzłów (eksperymentalna), 3: rosnąco według stopnia (eksperymentalna), 4: malejąco według stopnia (eksperymentalna), wartość ujemna: kolejność numerów węzłów) (domyślnie: 0) |
| SA_MinAggSize | R | Minimalny rozmiar agregatu (domyślnie: 3) |
| SA_Verify | R | Czy podczas konfiguracji wykonywać samokontrolę (0: nie, wartość dodatnia: tak) (domyślnie: 0) (głównie do debugowania) |
| SA_DumpVTK | R | Czy wyprowadzać agregację najwyższego poziomu w formacie VTK (0: bez wyjścia, wartość dodatnia: wyjście) (domyślnie: 0) (głównie do debugowania) |
Przykłady¶
Użyj CG z prekondycjonowaniem SSOR i ustaw maksymalną liczbę iteracji na 10000 oraz tolerancję zbieżności na 1.0e-8
Użyj GMRES z prekondycjonowaniem SSOR i ustaw rozmiar podprzestrzeni Kryłowa na 40 oraz docelową liczbę kolorów dla porządkowania wielokolorowego na 100
Użyj CG z prekondycjonowaniem ILU(0) i ustaw współczynnik skali stosowany do elementów diagonalnych podczas obliczania macierzy prekondycjonera na 1.1
Użyj AMG przez ML jako prekondycjonera dla CG
Użyj AMG przez ML jako prekondycjonera dla CG i MUMPS jako solvera siatki zgrubnej (dla trudnych problemów)
Użyj AMG przez ML jako prekondycjonera dla CG i cyklu W jako cyklu wielosiatkowego (dla trudnych problemów)
Użyj AMG przez ML jako prekondycjonera dla CG, MUMPS jako solvera siatki zgrubnej i ustaw maksymalną liczbę poziomów na 2 (dla bardzo trudnych problemów)
Użyj wbudowanego w HEC-MW SA-AMG jako prekondycjonera dla CG
Użyj SA-AMG jako prekondycjonera dla CG oraz MUMPS jako solvera siatki zgrubnej
W analizie kontaktu z tarciem użyj BiCGSTAB z prekondycjonerem SA-AMG i wyprowadź hierarchię prekondycjonera AMG