
@incollection{yzelman12b,
 author = "Yzelman, A. N. and Bisseling, R. H.",
 title = "A Cache-Oblivious Sparse Matrix--Vector Multiplication Scheme Based on the {H}ilbert Curve",
 booktitle = "Progress in Industrial Mathematics at ECMI 2010",
 series = "Mathematics in Industry",
 editor = {G\"unther, Michael and Bartel, Andreas and Brunk, Markus and Sch\"ops, Sebastian and Striebel, Michael},
 pages = "627-633",
 isbn = "978-3-642-25099-6",
 url = "http://dx.doi.org/10.1007/978-3-642-25100-9_73",
 doi = "10.1007/978-3-642-25100-9_73",
 publisher = "Springer",
 address = {Berlin, Germany},
 language = "English",
 year = "2012",
 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 = Ax on sufficiently large, unstructured matrices."
}

