  Partial differential equations (PDEs) are crucial in modelling diverse
phenomena across scientific disciplines, including seismic and medical imaging,
computational fluid dynamics, image processing, and neural networks. Solving
these PDEs on a large scale is an intricate and time-intensive process that
demands careful tuning. This paper introduces automated code-generation
techniques specifically tailored for distributed memory parallelism (DMP) to
solve explicit finite-difference (FD) stencils at scale, a fundamental
challenge in numerous scientific applications. These techniques are implemented
and integrated into the Devito DSL and compiler framework, a well-established
solution for automating the generation of FD solvers based on a high-level
symbolic math input. Users benefit from modelling simulations at a high-level
symbolic abstraction and effortlessly harnessing HPC-ready distributed-memory
parallelism without altering their source code. This results in drastic
reductions both in execution time and developer effort. While the contributions
of this work are implemented and integrated within the Devito framework, the
DMP concepts and the techniques applied are generally applicable to any FD
solvers. A comprehensive performance evaluation of Devito's DMP via MPI
demonstrates highly competitive weak and strong scaling on the Archer2
supercomputer, demonstrating the effectiveness of the proposed approach in
meeting the demands of large-scale scientific simulations.
