An Efficient Batch Solver for the Singular Value Decomposition on GPUs
Ahmad Abdelfattah, Massimiliano Fasi
TL;DR
This work presents a high-performance batch SVD solver for GPUs based on a one-sided Jacobi algorithm. By blocking, parallel round-robin ordering, and a suite of optimizations— including optimized Gram-matrix computation, a dedicated vector-update kernel, and masked batch execution—the solver achieves robust accuracy across real and complex data in multiple precisions and problem shapes. It demonstrates substantial speedups over vendor libraries and prior open-source solvers on both NVIDIA and AMD GPUs, while maintaining numerical reliability. The results underscore the viability of Jacobi-type methods for batched, small-to-medium SVDs on accelerators and highlight transferable design principles for batch linear algebra on GPUs.
Abstract
The singular value decomposition (SVD) is a powerful tool in modern numerical linear algebra, which underpins computational methods such as principal component analysis (PCA), low-rank approximations, and randomized algorithms. Many practical scenarios require solving numerous small SVD problems, a regime generally referred to as "batch SVD". Existing programming models can handle this efficiently on parallel CPU architectures, but high-performance solutions for GPUs remain immature. A GPU-oriented batch SVD solver is introduced. This solver exploits the one-sided Jacobi algorithm to exploit fine-grained parallelism, and a number of algorithmic and design optimizations achieve unmatched performance. Starting from a baseline solver, a sequence of optimizations is applied to obtain incremental performance gains. Numerical experiments show that the new solver is robust across problems with different numerical properties, matrix shapes, and arithmetic precisions. Performance benchmarks on both NVIDIA and AMD systems show significant performance speedups over vendor solutions as well as existing open-source solvers.
