Quelles directives dois-je utiliser lors de la recherche de bonnes méthodes de préconditionnement pour un problème spécifique?

19

Pour la solution de grands systèmes linéaires utilisant des méthodes itératives, il est souvent intéressant d'introduire un préconditionnement, par exemple résoudre à la place M - 1 ( A x = b ) , où M est ici utilisé pour le préconditionnement à gauche du système. Typiquement, nous devrions avoir M - 1A - 1 et fournir la base d'une solution (beaucoup plus) efficace ou d'une réduction des ressources de calcul (par exemple le stockage de la mémoire) par rapport à la solution du système d'origine (c'est-à-dire lorsque M = AAx=bM1(Ax=b)MM1A1M=A). Cependant, quelles directives devrions-nous utiliser pour choisir le préconditionneur? Comment les praticiens font-ils cela pour leur problème spécifique?

Allan P. Engsig-Karup
la source
1
Même pour une classe d'équations particulière, cela nécessiterait une réponse très longue et détaillée ...
Jack Poulson
Il devrait être possible de suggérer des stratégies heuristiques pour choisir les préconditionneurs. Par exemple, étant donné un problème, que font les praticiens dans la pratique pour essayer de trouver un bon préconditionneur? Commencez simplement par un préconditionneur diagonal de base basé sur l'extraction de la diagonale de ? ou? A
Allan P. Engsig-Karup
4
Je vais canaliser @MattKnepley et dire que l'action appropriée est de faire une recherche documentaire. Si cela échoue, essayez toutes les options facilement disponibles sur un problème assez important. Si cela échoue, réfléchissez profondément à la physique et à la façon dont vous pouvez trouver une solution approximative au problème à moindre coût, et utilisez-la comme préconditionneur.
Jack Poulson
@JackPoulson: Puisque cette question est dans la même veine que Quel solveur de système linéaire clairsemé utiliser? et Comment choisir un solveur linéaire évolutif , cela me semble sujet (bien que large). Étant donné que votre commentaire est essentiellement une réponse, pourriez-vous s'il vous plaît le convertir en réponse?
Geoff Oxberry
J'ai commencé à faire des bénéfices sur cette question, mais je suis également intéressé à voir plus de questions dans cette veine qui pourraient être mieux posées ou limitées à une classe spécifique de problèmes.
Aron Ahmadia

Réponses:

17

Au départ, je ne voulais pas donner de réponse car cela mérite un traitement très long, et j'espère que quelqu'un d'autre le donnera toujours. Cependant, je peux certainement donner un très bref aperçu de l'approche recommandée:

  1. Effectuez une recherche documentaire approfondie .
  2. Si cela échoue, essayez tous les préconditionneurs qui ont du sens et que vous pouvez mettre la main sur. MATLAB, PETSc et Trilinos sont des environnements agréables pour cela.
  3. Si cela échoue, vous devriez réfléchir soigneusement à la physique de votre problème et voir s'il est possible de trouver une solution approximative bon marché, peut-être même une version légèrement modifiée de votre problème.

Des exemples de 3 sont les versions déplacées de Helmholtz en laplacien et les travaux récents de Jinchao Xu sur le préconditionnement de l'opérateur biharmonique avec des laplaciens.

Jack Poulson
la source
Merci! Le reste de ce commentaire respecte la limite de caractères minimale.
Geoff Oxberry
14

D'autres ont déjà commenté la question du préconditionnement de ce que j'appellerai des matrices "monolithiques", c'est-à-dire par exemple la forme discrétisée d'une équation scalaire telle que l'équation de Laplace, l'équation de Helmholtz ou, si vous voulez la généraliser, la valeur vectorielle équation d'élasticité. Pour ces choses, il est clair que la multigrille (algébrique ou géométrique) est gagnante si l'équation est elliptique, et pour d'autres équations, elle n'est pas aussi claire - mais quelque chose comme SSOR fonctionne souvent assez bien (pour une certaine signification de "raisonnable").

Pour moi, la grande révélation a été de savoir quoi faire à propos de problèmes qui ne sont pas monolithiques, par exemple pour l'opérateur de Stokes Lorsque j'ai commencé l'analyse numérique il y a une quinzaine d'années, je pense que les gens espéraient que les mêmes techniques pourraient être appliquées à de telles matrices comme ci-dessus, et la direction de la recherche était soit d'essayer directement plusieurs grilles, soit d'utiliser des généralisations de SSOR lisseurs de point "comme Vanka) et des méthodes similaires. Mais cela a disparu car cela ne fonctionne pas très bien.

(ABBT0).

Ce qui est venu remplacer cela était ce qui était initialement appelé "préconditionneurs basés sur la physique" et plus tard simplement (et peut-être plus précisément) "préconditionneurs de blocs" comme celui de Silvester et Wathen. Ceux-ci sont souvent basés sur des éliminations de blocs ou des compléments Schur et l'idée est de construire un préconditionneur de telle manière que l'on puisse réutiliser des préconditionneurs pour des blocs individuels qui sont connus pour bien fonctionner. Dans le cas de l'équation de Stokes, par exemple, le préconditionneur Silvester / Wathen utilise la matrice

(AB0BTA1B)1
lorsqu'il est utilisé comme préconditionneur avec GMRES, il en résulterait une convergence en exactement deux itérations. Puisqu'il est triangulaire, l'inversion est également beaucoup plus simple, mais nous avons toujours le problème de ce que nous devons faire avec les blocs diagonaux, et là on utilise des approximations: où le tilde signifie remplacer l'inverse exact par une approximation. C'est souvent beaucoup plus simple: parce que le bloc A est un opérateur elliptique, ~ A - 1
(A1~B0(BTA1B)1~)
AA1~est bien approximé par un cycle en V multigrille, par exemple, et il s'avère qu'ici, est bien approximé par une ILU d'une matrice de masse.(BTA1B)1~

Cette idée de travailler avec les blocs individuels qui composent la matrice et de réutiliser des préconditionneurs sur des blocs individuels s'est avérée extrêmement puissante et a complètement changé notre façon de penser les systèmes d'équations de préconditionnement aujourd'hui. Bien sûr, cela est pertinent car la plupart des problèmes réels sont, en fait, des systèmes d'équations.

Wolfgang Bangerth
la source
1
Mec, oui, je voulais tellement la prime! ;-)
Wolfgang Bangerth
Dans votre deuxième paragraphe: "Mais cela a disparu car cela ne fonctionne pas très bien." Pouvez-vous nous expliquer pourquoi cela ne fonctionne pas très bien? Y a-t-il des circonstances dans lesquelles cela peut fonctionner?
Andrew
La raison pour laquelle la multigrille directe appliquée à des systèmes entiers ne s'est pas avérée si efficace est que le plus lisse doit conserver les propriétés structurelles de l'équation, et ce n'est pas trivial à atteindre. Par exemple, si vous souhaitez appliquer plusieurs grilles aux équations de Stokes, vous devez avoir un lisseur qui, étant donné un vecteur libre de divergence, vous donne un vecteur libre de divergence. Il existe de tels lissoirs pour Stokes, mais ce n'est pas trivial à construire et cela enlève généralement la qualité de lisseur / solveur. Il devient beaucoup plus difficile de conserver les propriétés dans des cas plus généraux.
Wolfgang Bangerth
Quant à la généralisation de choses comme Jacobi / SSOR / etc aux systèmes: la plupart de ces méthodes nécessitent que les entrées diagonales de la matrice soient non nulles. Ce n'est évidemment pas le cas pour Stokes. Ainsi, la méthode la plus simple suivante consiste à ne pas regarder les lignes de matrice individuelles mais les blocs de lignes, par exemple toutes les lignes pour les DoF associés à un seul sommet. Ce sont des «lisseurs ponctuels» (point comme dans le sommet) et ils fonctionnent dans une certaine mesure, mais ils souffrent de la même dégradation des performances que Jacobi / SSOR une fois que les problèmes deviennent importants. Pour éviter cela, un préconditionneur doit échanger des informations à l'échelle mondiale comme multigrille.
Wolfgang Bangerth
Multigrid est notoirement inefficace pour résoudre Helmholtz parce que, principalement parce que les modes oscillatoires à basse énergie sont difficiles à lisser ou à représenter dans un espace grossier. Il y a eu quelques travaux sur les multigrilles à rayons d'onde, mais la formulation est très technique et ce n'est pas une méthodologie mature à ce stade. Notez que les systèmes non symétriques peuvent également être résolus en utilisant ce type de décomposition en blocs. En fonction du choix des variables (par exemple primitif vs conservateur), un changement de base peut être nécessaire à l'intérieur du préconditionneur pour exposer la structure bloquée.
Jed Brown
13

Jack a donné une bonne procédure pour trouver un préconditionneur. Je vais essayer une adresse à la question "Qu'est-ce qui fait un bon préconditionneur?". La définition opérationnelle est:

UNEX=bM-1UNE-1

cependant, cela ne nous donne aucune idée de la conception d'un préconditionneur. La plupart des préconditionneurs sont basés sur la manipulation du spectre de l'opérateur. De manière générique, les méthodes de Krylov convergent plus rapidement lorsque les valeurs propres sont regroupées, voir Itérations matricielles ou fonctions méromorphes et Algèbre linéaire . Parfois, nous pouvons prouver qu'un résultat de préconditionneur n'est que quelques valeurs propres uniques, par exemple une note sur le préconditionnement pour les systèmes linéaires indéfinis .

Une stratégie commune est illustrée par Multigrid. Les préconditionneurs de relaxation (ici plus doux) comme le SOR éliminent les composants haute fréquence dans l'erreur. Lorsque le résidu est projeté sur une grille grossière, les composantes d'erreur de fréquence inférieure deviennent plus fréquentes et peuvent à nouveau être attaquées par le SOR. Cette stratégie de base sous-tend des versions plus complexes de MG, comme AMG. Notez qu'en bas, le solveur doit résoudre avec précision les fréquences les plus basses de l'erreur.

Une autre stratégie consiste à résoudre l'équation dans de petits sous-espaces, ce qui est exactement ce que font les solveurs de Krylov. Dans sa forme la plus simple, il s'agit de la méthode Kaczmarz ou de la méthode Additive Schwarz . La souche avancée de la théorie ici, la décomposition de domaine , se concentre sur l'approximation spectrale de l'erreur sur l'interface, car les domaines sont supposés être résolus assez précisément.

UNE

Matt Knepley
la source
Merci pour votre réponse. Toutes les expériences concernant jusqu'où nous devrions aller pour prouver réellement que le préconditionnement fonctionne pour les grands systèmes - et peut-être comment cela peut ou doit être fait dans la pratique. D'après mon expérience, pour de nombreux systèmes, nous devons nous appuyer sur l'intuition, l'heuristique, etc.
Allan P. Engsig-Karup
Je pense que l'intuition va trop loin. Ce que je vois dans la pratique est la preuve d'un système simple. Ensuite, un argument selon lequel certaines modifications devraient être insensibles à un paramètre ou à un certain type de variation. Puis des expériences numériques montrant qu'il fonctionne même en dehors de ce modèle de variation.
Matt Knepley