A cache-oblivious sparse matrix-vector multiplication scheme based on the Hilbert curve
Publication date
2012
Editors
Günther, Michael
Advisors
Supervisors
Document Type
Part of book
Metadata
Show full item recordCollections
License
Abstract
The sparse matrix–vector (SpMV) multiplication is an important kernel in many applications. When the sparse matrix used is unstructured, however, standard SpMV multiplication implementations typically are inefficient in terms of cache usage, sometimes working at only a fraction of peak performance. Cache-aware algorithms take information on specifics of the cache architecture as a parameter to derive an efficient SpMV multiply. In contrast, cache-oblivious algorithms strive to obtain efficiency regardless of cache specifics. In earlier work in this latter area, Haase et al. (2007) use the Hilbert curve to order nonzeroes in the sparse matrix. They obtain speedup mainly when multiplying against multiple (up to eight) right-hand sides simultaneously. We improve on this by introducing a new datastructure, called Bi-directional Incremental Compressed Row Storage (BICRS). Using this datastructure to store the nonzeroes in Hilbert order, speedups of up to a factor two are attained for the SpMV multiplication y DAx on sufficiently large, unstructured matrices.
Keywords
Sparse matrix, Column Index, Hilbert Curve, Cache Architecture, Link Matrix, Taverne
Citation
Yzelman, A N & Bisseling, R H 2012, A cache-oblivious sparse matrix-vector multiplication scheme based on the Hilbert curve. in M Günther (ed.), Progress in industrial mathematics at ECMI 2010. Mathematics in industry, no. 17, Springer, Heidelberg, pp. 627-633. https://doi.org/10.1007/978-3-642-25100-9_73