Automatically Generating and Tuning GPU Code for Sparse Matrix-Vector Multiplication From a High-Level Representation
Sparse matrices, i.e. matrices in which the majority of elements are zeros, occur in many applications. A plethora of storage formats have been proposed to efficiently perform matrix operations involving matrices having specific structure (e.g. diagonal) or on specific hardware (e.g. GPUs). The authors propose a system-independent representation of sparse matrix formats that allows a compiler to generate efficient, system-specific code for sparse matrix operations. To show the viability of such a representation they have developed a compiler that generates and tunes code for Sparse Matrix-Vector multiplication (SpMV) on GPUs. They evaluate their framework on six state-of-the-art matrix formats and show that the generated code performs similar to or better than hand-optimized code.