Verification Challenges in Sparse Matrix Vector Multiplication in High Performance Computing: Part I
Zhang
Sparse matrix vector multiplication (SpMV) is a fundamental kernel in scientific codes that rely on iterative solvers. In this first part of our work, we present both a sequential and a basic MPI parallel implementations of SpMV, aiming to provide a challenge problem for the scientific software verification community. The implementations are described in the context of the PETSc library.
academic
Verifikationsherausforderungen bei der Multiplikation von Sparse-Matrix-Vektoren im High-Performance-Computing: Teil I
Die Multiplikation von Sparse-Matrix-Vektoren (SpMV) ist ein fundamentaler Kernel in wissenschaftlichen Codes, die auf iterative Löser angewiesen sind. In diesem ersten Teil unserer Arbeit präsentieren wir sowohl eine sequenzielle als auch eine grundlegende MPI-parallele Implementierung von SpMV, um ein Herausforderungsproblem für die Verifikationsgemeinschaft wissenschaftlicher Software bereitzustellen. Die Implementierungen werden im Kontext der PETSc-Bibliothek beschrieben.
Diese Forschung befasst sich mit Softwareverifikationsherausforderungen bei der Multiplikation von Sparse-Matrix-Vektoren (SpMV) im High-Performance-Computing. SpMV ist die Kernoperation zur Lösung von dünnbesetzten linearen Gleichungssystemen Ax=b und wird weit verbreitet in wissenschaftlichen Rechencodes verwendet, die auf iterativen Lösern basieren, insbesondere in großskaligen Krylov-Unterraum-Methoden.
Grundlegender Charakter: SpMV ist ein fundamentaler Kernalgorithmus der wissenschaftlichen Berechnung, dessen Korrektheit die Zuverlässigkeit von Anwendungen auf höherer Ebene direkt beeinflusst
Komplexität: Obwohl die mathematische Definition einfach ist (yi = Σ(aij·xj)), machen Speicherformate, Datenverteilung, Parallelisierung und Optimierung die Implementierung komplex
Verifikationsherausforderungen: Vorhandene hochoptimierte Implementierungen stellen erhebliche Herausforderungen für die Softwareverifikation dar
Bereitstellung eines strukturierten Herausforderungsproblems für die Verifikationsgemeinschaft wissenschaftlicher Software durch Bereitstellung von SpMV-Implementierungen mit zunehmender Komplexität, um die Entwicklung und Bewertung von Verifikationswerkzeugen und -methoden zu unterstützen.
Bereitstellung eines standardisierten Verifikationsherausforderungsproblems: Entwurf standardisierter Testfälle für SpMV für die Verifikationsgemeinschaft wissenschaftlicher Software
Implementierung von zwei SpMV-Algorithmen unterschiedlicher Komplexität:
// Sequenzielle Version
typedef struct {
int m, n; // Matrixdimensionen
int *i, *j; // CSR-Format-Indizes
double *a; // Werte von Nicht-Null-Elementen
} Mat;
// MPI-parallele Version
typedef struct {
int m, n, M, N; // Lokale und globale Dimensionen
int rstart, cstart; // Startzeilen- und Spaltenindizes
int *i, *j;
double *a;
} Mat;
Verifikation, dass das berechnete Ergebnis y erfüllt: yi = Σ(aij·xj), wobei aij, die nicht in der CSR-Darstellung gespeichert sind, als 0 behandelt werden
Layout-Korrektheit: Verifikation, dass Σm = M, Σn = N
Lokale Berechnungskorrektheit: Verifikation, dass y auf jedem Prozess das korrekte Produkt der entsprechenden lokalen Submatrix und des vollständigen Vektors x ist
S Balay et al. (2025): PETSc/TAO Users Manual. Technical Report ANL-21/39 - Revision 3.23, Argonne National Laboratory
Yousef Saad (2003): Iterative Methods for Sparse Linear Systems, second edition. Society for Industrial and Applied Mathematics
Gesamtbewertung: Dies ist eine praktisch sehr wertvolle Arbeit, die zwar begrenzte theoretische Innovationen bietet, aber der Verifikationsgemeinschaft wissenschaftlicher Software dringend benötigte standardisierte Herausforderungsprobleme bereitstellt. Das Paper hat klare Struktur, vollständige Implementierung und gute Reproduzierbarkeit sowie Erweiterbarkeit und hat wichtigen Wert für die Förderung der Entwicklung im HPC-Softwareverifikationsbereich.