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
Défis de Vérification dans la Multiplication Matrice-Vecteur Creuse en Calcul Haute Performance : Partie I
La multiplication matrice-vecteur creuse (SpMV) est un noyau fondamental dans les codes scientifiques qui s'appuient sur des solveurs itératifs. Dans cette première partie de notre travail, nous présentons à la fois une implémentation séquentielle et une implémentation parallèle MPI de base de SpMV, visant à fournir un problème de défi pour la communauté de vérification des logiciels scientifiques. Les implémentations sont décrites dans le contexte de la bibliothèque PETSc.
Cette recherche aborde les défis de vérification logicielle pour la multiplication matrice-vecteur creuse (SpMV) en calcul haute performance. SpMV est l'opération centrale pour résoudre les systèmes linéaires creux Ax=b, largement utilisée dans les codes de calcul scientifique basés sur des solveurs itératifs, en particulier dans les méthodes de sous-espace de Krylov à grande échelle.
Caractère fondamental: SpMV est un algorithme central du calcul scientifique, dont la correction affecte directement la fiabilité des applications de niveau supérieur
Complexité: Bien que la définition mathématique soit simple (yi = Σ(aij·xj)), les formats de stockage, la distribution des données, la parallélisation et l'optimisation rendent l'implémentation complexe
Défis de vérification: Les implémentations hautement optimisées existantes posent des défis majeurs pour la vérification logicielle
Fournir à la communauté de vérification des logiciels scientifiques un problème de défi structuré, en proposant des implémentations SpMV allant du simple au complexe, pour aider au développement et à l'évaluation des outils et méthodes de vérification.
Fourniture d'un problème de défi de vérification standardisé: Conception de cas de test standardisés SpMV pour la communauté de vérification des logiciels scientifiques
Implémentation de deux algorithmes SpMV de complexités différentes:
Implémentation séquentielle (seq.c)
Implémentation parallèle MPI de base (mpibasic.c)
Établissement d'un cadre de vérification complet: Incluant la génération de données d'entrée, la vérification de correction et les mécanismes de détection d'erreurs
Définition explicite des objectifs de vérification: Fourniture d'exigences de vérification spécifiques et de défis pour chaque implémentation
// Version séquentielle
typedef struct {
int m, n; // Dimensions de la matrice
int *i, *j; // Indices au format CSR
double *a; // Valeurs des éléments non nuls
} Mat;
// Version parallèle MPI
typedef struct {
int m, n, M, N; // Dimensions locales et globales
int rstart, cstart; // Indices de ligne et colonne de départ
int *i, *j;
double *a;
} Mat;
Conception de complexité progressive: Du simple implémentation séquentielle à l'implémentation parallèle de base, facilitant les tests progressifs des outils de vérification
Interface de vérification standardisée: Fourniture d'un format d'entrée-sortie unifié et d'un mécanisme de vérification de correction
Contexte d'application réelle: Basé sur les modèles d'implémentation réels de la bibliothèque PETSc, avec une signification pratique
Cadre extensible: Pose les fondations pour les versions optimisées plus complexes futures (Partie II)
Correction de la disposition: Vérification que Σm = M, Σn = N
Correction du calcul local: Vérification que le y sur chaque processus est le résultat correct du produit de la sous-matrice locale correspondante avec le vecteur x complet
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
Évaluation Globale: Cet article est un travail très pratique qui, bien que sa contribution en innovation théorique soit limitée, fournit à la communauté de vérification des logiciels scientifiques un problème de défi standardisé très demandé. L'article est bien structuré, l'implémentation est complète, avec une bonne reproductibilité et extensibilité, et a une valeur importante pour promouvoir le développement du domaine de la vérification des logiciels HPC.