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
Проблемы верификации при умножении разреженной матрицы на вектор в высокопроизводительных вычислениях: Часть I
Умножение разреженной матрицы на вектор (SpMV) является фундаментальным ядром в научных кодах, использующих итеративные решатели. В первой части нашей работы мы представляем как последовательную, так и базовую MPI параллельную реализацию SpMV с целью предоставить задачу-вызов для сообщества верификации научного программного обеспечения. Реализации описаны в контексте библиотеки PETSc.
Данное исследование посвящено проблемам верификации программного обеспечения для умножения разреженной матрицы на вектор (SpMV) в высокопроизводительных вычислениях. SpMV является основной операцией при решении разреженных систем линейных уравнений Ax=b и широко применяется в научных вычислительных кодах, основанных на итеративных решателях, особенно в методах подпространства Крылова большого масштаба.
Фундаментальность: SpMV является базовым алгоритмом научных вычислений, и его корректность напрямую влияет на надежность приложений более высокого уровня
Сложность: Несмотря на простоту математического определения (yi = Σ(aij·xj)), форматы хранения, распределение данных, параллелизация и оптимизация делают реализацию сложной
Проблемы верификации: Существующие высокооптимизированные реализации создают значительные трудности для верификации программного обеспечения
Предоставить структурированную задачу-вызов для сообщества верификации научного программного обеспечения путем предоставления реализаций SpMV различной сложности, помогая в разработке и оценке инструментов и методов верификации.
Предоставление стандартизированной задачи верификации: Разработаны стандартные тестовые случаи SpMV для сообщества верификации научного программного обеспечения
Реализация двух алгоритмов SpMV различной сложности:
Последовательная реализация (seq.c)
Базовая MPI параллельная реализация (mpibasic.c)
Установление полной структуры верификации: Включая генерацию входных данных, проверку корректности и механизмы обнаружения ошибок
Четкое определение целей верификации: Предоставление конкретных требований верификации и вызовов для каждой реализации
// Последовательная версия
typedef struct {
int m, n; // размеры матрицы
int *i, *j; // индексы формата CSR
double *a; // значения ненулевых элементов
} Mat;
// MPI параллельная версия
typedef struct {
int m, n, M, N; // локальные и глобальные размеры
int rstart, cstart; // начальные индексы строк и столбцов
int *i, *j;
double *a;
} Mat;
Проектирование прогрессивной сложности: От простой последовательной реализации к базовой параллельной, облегчая прогрессивное тестирование инструментов верификации
Стандартизированный интерфейс верификации: Предоставление единого формата входных/выходных данных и механизма проверки корректности
Контекст реальных приложений: Основано на реальных моделях реализации библиотеки PETSc с практической значимостью
Расширяемая структура: Закладывает основу для более сложных оптимизированных версий (Часть II)
Корректность расположения: Проверка Σm = M, Σn = N
Корректность локальных вычислений: Проверка того, что y на каждом процессе является корректным результатом произведения соответствующей локальной подматрицы на полный вектор x
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
Общая оценка: Это практически ценная работа, которая, хотя и имеет ограниченный вклад в теоретические инновации, предоставляет срочно необходимую стандартизированную задачу-вызов для сообщества верификации научного программного обеспечения. Статья имеет четкую структуру, полную реализацию, хорошую воспроизводимость и расширяемость, имея значительную ценность для развития области верификации программного обеспечения HPC.