[Paper Review] GPU Accelerated Discontinuous Galerkin Methods for Shallow Water Equations
This paper presents a GPU-accelerated discontinuous Galerkin method for solving two-dimensional shallow water equations with high-order accuracy and robustness. It employs local time stepping via a multi-rate Adams-Bashforth scheme, a modified total variation bounded limiter, and a positivity-preserving limiter for dry/wet transitions, achieving up to 5× speedup using multiple elements per work group and optimized memory access patterns on GPUs, with portable performance across OpenCL, CUDA, and OpenMP via OCCA.
We discuss the development, verification, and performance of a GPU accelerated discontinuous Galerkin method for the solutions of two dimensional nonlinear shallow water equations. The shallow water equations are hyperbolic partial differential equations and are widely used in the simulation of tsunami wave propagations. Our algorithms are tailored to take advantage of the single instruction multiple data (SIMD) architecture of graphic processing units. The time integration is accelerated by local time stepping based on a multi-rate Adams-Bashforth scheme. A total variational bounded limiter is adopted for nonlinear stability of the numerical scheme. This limiter is coupled with a mass and momentum conserving positivity preserving limiter for the special treatment of a dry or partially wet element in the triangulation. Accuracy, robustness and performance are demonstrated with the aid of test cases. We compare the performance of the kernels expressed in a portable threading language OCCA, when cross compiled with OpenCL, CUDA, and OpenMP at runtime.
Motivation & Objective
- Develop a high-order, stable, and efficient numerical scheme for simulating tsunami wave propagation using the shallow water equations.
- Address the challenges of nonlinear hyperbolic PDEs with large-scale variations in bathymetry, irregular boundaries, and wetting-drying dynamics.
- Leverage GPU hardware architecture to accelerate discontinuous Galerkin discretizations through optimized memory access and parallelism.
- Enable portable high-performance computing across diverse GPU and CPU platforms using the OCCA portable threading framework.
- Ensure numerical robustness through advanced limiters and positivity-preserving schemes for dry or partially wet elements.
Proposed method
- Discretizes the shallow water equations using a nodal discontinuous Galerkin method on unstructured triangular meshes, enabling high-order accuracy and local mass conservation.
- Employs a multi-rate Adams-Bashforth time integration scheme with local time stepping to improve efficiency by allowing different elements to advance with different time steps.
- Applies a modified total variation bounded (TVB) limiter to suppress spurious oscillations in the solution while maintaining high-order accuracy.
- Introduces a mass and momentum conserving positivity-preserving limiter to handle dry or partially wet elements, ensuring physical stability.
- Optimizes GPU kernels using loop unrolling, padding for memory alignment, shared memory usage, and processing multiple elements per work group to maximize memory bandwidth and hide latency.
- Uses the OCCA portable threading language to write kernels once and cross-compile them to OpenCL, CUDA, or OpenMP at runtime, enabling portable performance across heterogeneous architectures.
Experimental results
Research questions
- RQ1Can a high-order discontinuous Galerkin method for shallow water equations be efficiently accelerated on GPU architectures using portable code?
- RQ2How effective is local time stepping with a multi-rate Adams-Bashforth scheme in improving computational efficiency for hyperbolic PDEs on unstructured meshes?
- RQ3Can a combined TVB and positivity-preserving limiter maintain numerical stability and accuracy in the presence of dry or partially wet elements?
- RQ4What performance gains are achievable through GPU kernel optimizations such as shared memory usage, loop unrolling, and multiple elements per work group?
- RQ5How does the performance of OCCA-generated kernels compare to hand-optimized OpenCL and CUDA kernels across different GPU and CPU platforms?
Key findings
- The GPU-accelerated discontinuous Galerkin solver achieves up to 5× speedup by processing multiple elements per work group, with performance highly dependent on GPU architecture.
- The use of shared memory for storing element-based operators improves performance significantly—especially on NVIDIA Tesla C2050—demonstrating a clear performance gain over global memory access.
- The modified TVB limiter effectively suppresses oscillations in the solution while preserving high-order accuracy in smooth regions.
- The positivity-preserving limiter successfully handles dry and wet transitions without introducing unphysical oscillations or loss of mass or momentum.
- OCCA-generated kernels achieve performance comparable to hand-optimized OpenCL and CUDA kernels on NVIDIA Titan GPU, validating its portability and efficiency.
- OCCA with OpenMP on CPU outperforms OCCA with OpenCL on CPU, indicating that CPU-optimized kernels via OCCA can be competitive with GPU-ported code in some cases.
Better researchstarts right now
From reading papers to final review, dramatically reduce your research time.
No credit card · Free plan available
This review was created by AI and reviewed by human editors.