So ziemlich die Frage. Wie wichtig ist bei einer allgemein spärlichen, nicht symmetrischen (sowohl numerisch als auch strukturell) Matrix das Sparsity-Muster (dh die Zeilen- / Spaltenpermutation von Matrix / Vektor) für iterative Löser? Ich kann sehen, dass es für Direktlöser (LU) oder Vorkonditionierer (ILU) wichtig wird, indem es die Anzahl der Füllungen direkt beeinflusst.
Für iterative Löser scheint es jedoch, dass der wichtigste Teil die MatVec-Operation ist, die sich nicht um das tatsächliche Matrixmuster zu kümmern scheint. Gibt es eine Komponente, die von dem Muster abhängen könnte, das ich hier nicht in Betracht ziehe?
Wie wäre es parallel? Ich vermute, dass das Muster für die Verteilung der Matrix und der Vektoren wichtig werden könnte und somit das Kommunikationsvolumen / den Overhead bestimmt, möchte aber andere Gedanken und Eingaben sehen.
Ich frage dies sowohl allgemein als auch in Bezug auf die KSP-Löser von PETSc.
quelle
Antworten:
Die Bestellung ist nur für den Lastausgleich / die Kommunikation und die Eignung zur Vorkonditionierung von Bedeutung. Die Krylov-Methode kümmert sich nicht um die Reihenfolge oder sogar darum, ob die Matrixeinträge gespeichert sind.
In der Praxis erfordert eine schlechte Bestellung möglicherweise viel mehr Kommunikation als sonst erforderlich, wenn mit einer Matrix multipliziert wird. Ein Beispiel finden Sie im Abschnitt des PETSc-Benutzerhandbuchs zu "Natürliche Bestellung" im Vergleich zu "PETSc-Bestellung". Darüber hinaus kann eine Reihenfolge, die einer fehlerhaften parallelen Partition entspricht, die Vorkonditionierung der Domänenzerlegung weniger effektiv machen. Beachten Sie, dass es hier auf die Partition ankommt, obwohl eine Partition eine (Äquivalenzklasse von) Reihenfolge induziert.
quelle