Iterative Poisson Solvers for Self-gravity with the GPU Code Astaroth
Ruben Krasnopolsky (1), Touko Puro (2), Wei-Wen Li (1), Hsien Shang (1), Miikka S. V\"ais\"al\"a (1, 3), Mordecai-Mark Mac Low (4), Matthias Rheinhardt (2), Maarit Korpi-Lagg (2) ((1) Institute of Astronomy, Astrophysics, Academia Sinica, Taipei

TL;DR
This paper develops and benchmarks GPU-based Poisson solvers within the Astaroth platform, demonstrating high efficiency and accuracy for simulating self-gravitating astrophysical systems.
Contribution
It introduces novel combinations of discretizations and smoothers, and validates their performance and accuracy in astrophysical simulations.
Findings
Solvers achieve performance comparable to existing algorithms.
Validated accuracy against known analytic solutions.
Effective coupling with hydrodynamics for star formation simulations.
Abstract
We present the development and benchmarking of Poisson solvers for graphics processing units (GPUs). Implemented in the Astaroth platform, the solvers feature high computational efficiency. We present novel combinations of discretizations and smoothers and document practical and performance-focused implementations aimed at reducing time-to-solution for self-gravitating systems. We describe the solver architectures and validate their accuracy against known analytic solutions. We measure convergence and timing per iteration for various solver algorithms, including conjugate gradient, successive overrelaxation, and multigrid in Cartesian coordinates, along with biconjugate gradient stabilized in spherical coordinates. We also couple the solvers to the Astaroth hydrodynamics to simulate a classic time-dependent problem in star formation, measuring accuracy and time-to-solution, for…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
