  This paper presents a workflow for synthesizing near-optimal FPGA
implementations for structured-mesh based stencil applications for explicit
solvers. It leverages key characteristics of the application class, its
computation-communication pattern, and the architectural capabilities of the
FPGA to accelerate solvers from the high-performance computing domain. Key new
features of the workflow are (1) the unification of standard state-of-the-art
techniques with a number of high-gain optimizations such as batching and
spatial blocking/tiling, motivated by increasing throughput for real-world work
loads and (2) the development and use of a predictive analytic model for
exploring the design space, resource estimates and performance. Three
representative applications are implemented using the design workflow on a
Xilinx Alveo U280 FPGA, demonstrating near-optimal performance and over 85%
predictive model accuracy. These are compared with equivalent highly-optimized
implementations of the same applications on modern HPC-grade GPUs (Nvidia V100)
analyzing time to solution, bandwidth and energy consumption. Performance
results indicate equivalent runtime performance of the FPGA implementations to
the V100 GPU, with over 2x energy savings, for the largest non-trivial
application synthesized on the FPGA compared to the best performing GPU-based
solution. Our investigation shows the considerable challenges in gaining high
performance on current generation FPGAs compared to traditional architectures.
We discuss determinants for a given stencil code to be amenable to FPGA
implementation, providing insights into the feasibility and profitability of a
design and its resulting performance.
