Roofline Guided Design and Analysis of a Multi-Stencil CFD Solver
Abstract: Solving Navier-Stokes equations is a challenging multiscale multi-physics problem. Our solver is a realistic structured mesh finite-volume code and presents many challenges for real applications. Specifically, our solver consists of multi-stencils with different computational intensities and memory access patterns. While the challenges of single-stencil kernels still apply to this problem, solving a multi-stencil kernel poses new challenges, since each stencil has a unique pattern and requires access to different neighbors.
In this talk, I will outline how multiple stencils impact optimization and discuss techniques for improving locality and parallelism by trading off redundant work and intermediate accuracy. We also ask whether computational fluid dynamics applications can be expressed in stencil DSLs, whether such an implementation can deliver a sufficient combination of optimizations to compete with a hand-tuned code, and what are its limitations.