@conference {bisbas2020IPDPStbf,
	title = {Temporal blocking of finite-difference stencil operators with sparse "off-the-grid" sources},
	booktitle = {IEEE International Parallel and Distributed Processing Symposium},
	year = {2021},
	note = {(IPDPS, virtual)},
	month = {5},
	abstract = {Stencil kernels dominate a range of scientific applications including seismic and medical imaging, image processing, and neural networks. Temporal blocking is a performance optimisation that aims to reduce the required memory bandwidth of stencil computations by re-using data from the cache for multiple time steps. It has already been shown to be beneficial for this class of algorithms. However, optimising stencils for practical applications remains challenging. These computations often include sparsely located operators, not aligned with the computational grid ("off-the-grid"). For example, our work is motivated by sources that inject a wavefield and measurements interpolating grid values. The resulting data dependencies make the adoption of temporal blocking much more challenging. We propose a methodology to inspect these data dependencies and reorder the computation, leading to performance gains in stencil codes where temporal blocking has not been applicable. We implement this novel scheme in the Devito domain-specific compiler toolchain. Devito implements a domain-specific language embedded in Python to generate optimised partial differential equation solvers using the finite-difference method from high-level symbolic problem definitions. We evaluate our scheme using isotropic acoustic, anisotropic acoustic and isotropic elastic wave propagators of industrial significance. Performance evaluation, after auto-tuning, shows that this enables substantial performance improvement through temporal blocking, over highly-optimised vectorized spatially-blocked code of up to 1.6x.},
	keywords = {finite-difference, HPC, performance, wave-equation},
	doi = {10.1109/IPDPS49936.2021.00058},
	url = {https://arxiv.org/pdf/2010.10248.pdf},
	author = {George Bisbas and Fabio Luporini and Mathias Louboutin and Rhodri Nelson and Gerard Gorman and Paul H. J. Kelly}
}
@article {louboutin2016ppf,
	title = {Performance prediction of finite-difference solvers for different computer architectures},
	journal = {Computers \& Geosciences},
	volume = {105},
	year = {2017},
	note = {(Computers \& Geosciences)},
	month = {08},
	pages = {148-157},
	abstract = {The life-cycle of a partial differential equation (PDE) solver is often characterized by three development phases: the development of a stable numerical discretization; development of a correct (verified) implementation; and the optimization of the implementation for different computer architectures. Often it is only after significant time and effort has been invested that the performance bottlenecks of a PDE solver are fully understood, and the precise details varies between different computer architectures. One way to mitigate this issue is to establish a reliable performance model that allows a numerical analyst to make reliable predictions of how well a numerical method would perform on a given computer architecture, before embarking upon potentially long and expensive implementation and optimization phases. The availability of a reliable performance model also saves developer effort as it both informs the developer on what kind of optimisations are beneficial, and when the maximum expected performance has been reached and optimisation work should stop. We show how discretization of a wave-equation can be theoretically studied to understand the performance limitations of the method on modern computer architectures. We focus on the roofline model, now broadly used in the high-performance computing community, which considers the achievable performance in terms of the peak memory bandwidth and peak floating point performance of a computer with respect to algorithmic choices. A first principles analysis of operational intensity for key time-stepping finite-difference algorithms is presented. With this information available at the time of algorithm design, the expected performance on target computer systems can be used as a driver for algorithm design.},
	keywords = {finite differences, HPC, Modeling, performance},
	doi = {https://doi.org/10.1016/j.cageo.2017.04.014},
	url = {https://slim.gatech.edu/Publications/Public/Journals/ComputersAndGeosciences/2016/louboutin2016ppf/louboutin2016ppf.pdf},
	author = {Mathias Louboutin and Michael Lange and Felix J. Herrmann and Navjot Kukreja and Gerard Gorman}
}
