@inproceedings{7953c887af4e4017847e8e8538063459,
title = "Accelerating SeisSol by generating vectorized code for sparse matrix operators",
abstract = "SeisSol is a software package for the simulation of seismic wave phenomena on unstructured grids, based on the discontinuous Galerkin method combined with ADER time discretization. A recent study shows that the intra-element performance of SeisSol is critical for its overall performance. Most of the element matrices are sparse operators implemented employing a standard sparse matrix storage scheme. Since their sparsity patterns are known a-priori we follow a different approach in this work. Here, we execute an enriched offline and initialization phase which is used to generate hardware-aware code, featuring optimal vectorization and removing indirect memory accesses by eliminating the index arrays and hard-wiring them into the code. Due to these optimizations we are able to run intra-element sparse matrix operations at up to 50% of achievable peak performance of an Intel Sandy Bridge core which results in speeding up SeisSol by a factor of more than 2.1 compared to the original implementation.",
keywords = "ADER-DG, Code generation, SeisSol, Sparse-Matrix Multiplication, Vectorization",
author = "Alexander Breuer and Alexander Heinecke and Michael Bader and Christian Pelties",
year = "2014",
doi = "10.3233/978-1-61499-381-0-347",
language = "English",
isbn = "9781614993803",
series = "Advances in Parallel Computing",
publisher = "IOS Press BV",
pages = "347--356",
booktitle = "Parallel Computing",
}