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
Desafíos de Verificación en la Multiplicación de Matriz Dispersa por Vector en Computación de Alto Rendimiento: Parte I
La multiplicación de matriz dispersa por vector (SpMV) es un núcleo fundamental en códigos científicos que dependen de solucionadores iterativos. En esta primera parte de nuestro trabajo, presentamos tanto implementaciones secuenciales como implementaciones paralelas básicas de MPI de SpMV, con el objetivo de proporcionar un problema de desafío para la comunidad de verificación de software científico. Las implementaciones se describen en el contexto de la biblioteca PETSc.
Esta investigación aborda los desafíos de verificación de software para la multiplicación de matriz dispersa por vector (SpMV) en computación de alto rendimiento. SpMV es la operación central para resolver sistemas de ecuaciones lineales dispersas Ax=b, ampliamente utilizada en códigos de computación científica basados en solucionadores iterativos, particularmente en métodos de subespacio de Krylov a gran escala.
Carácter Fundamental: SpMV es un algoritmo central fundamental en computación científica, cuya corrección afecta directamente la confiabilidad de aplicaciones de nivel superior
Complejidad: Aunque la definición matemática es simple (yi = Σ(aij·xj)), los formatos de almacenamiento, distribución de datos, paralelización y optimización hacen que la implementación sea compleja
Desafíos de Verificación: Las implementaciones altamente optimizadas existentes presentan desafíos significativos para la verificación de software
Proporcionar a la comunidad de verificación de software científico un problema de desafío estructurado, ofreciendo implementaciones de SpMV que van desde simples hasta complejas para ayudar en el desarrollo y evaluación de herramientas y métodos de verificación.
Proporciona un Problema de Desafío de Verificación Estandarizado: Diseña casos de prueba estándar de SpMV para la comunidad de verificación de software científico
Implementa Dos Algoritmos SpMV de Diferentes Niveles de Complejidad:
Implementación secuencial (seq.c)
Implementación paralela básica con MPI (mpibasic.c)
Establece un Marco de Verificación Completo: Incluye generación de datos de entrada, verificación de corrección y mecanismos de detección de errores
Define Claramente Objetivos de Verificación: Proporciona requisitos de verificación específicos y desafíos para cada implementación
// Versión secuencial
typedef struct {
int m, n; // Dimensiones de la matriz
int *i, *j; // Índices en formato CSR
double *a; // Valores de elementos no nulos
} Mat;
// Versión paralela con MPI
typedef struct {
int m, n, M, N; // Dimensiones locales y globales
int rstart, cstart; // Índices de fila y columna iniciales
int *i, *j;
double *a;
} Mat;
Diseño de Complejidad Progresiva: Desde implementación secuencial simple hasta implementación paralela básica, facilitando pruebas progresivas de herramientas de verificación
Interfaz de Verificación Estandarizada: Proporciona formato unificado de entrada/salida y mecanismo de verificación de corrección
Contexto de Aplicación Real: Basado en patrones de implementación reales de la biblioteca PETSc, con significado práctico
Marco Extensible: Sienta las bases para versiones optimizadas más complejas (Parte II) en el futuro
Corrección de Disposición: Verificar que Σm = M, Σn = N
Corrección de Cálculo Local: Verificar que la y en cada proceso es el resultado correcto del producto de la submatriz local correspondiente y el vector x completo
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
Evaluación General: Este es un trabajo muy práctico que, aunque tiene contribuciones limitadas en innovación teórica, proporciona a la comunidad de verificación de software científico un problema de desafío estandarizado urgentemente necesario. El artículo tiene estructura clara, implementación completa, buena reproducibilidad y extensibilidad, con valor importante para promover el desarrollo del campo de verificación de software HPC.