Gauss-Seidel: Warum die schnellere Methode 5-mal langsamer ist
Measuring Gauss-Seidel loop-carried dependency and fixing it via loop unrolling

Gauss-Seidel konvergiert in der halben Anzahl von Iterationen wie Jacobi, benötigt aber 4- bis 5-mal mehr Zeit. Der Grund sind schleifenübergreifende Abhängigkeiten, die den Compiler an der Vektorisierung hindern. Eine Analyse mit OSACA zeigt: Der kritische Pfad ist identisch, doch die latenzbedingte Abhängigkeit von 12 Zyklen pro Element bremst Gauss-Seidel aus. Loop Unrolling könnte helfen, muss aber die Abhängigkeit zuerst auflösen.
Gauss-Seidels schnellere Konvergenz wird vollständig mit einer serialisierten Abhängigkeitskette von 12 Zyklen pro Element erkauft, die der Compiler allein nicht auflösen kann.