lead by Dr Jeffrey Salmond

The PROMPI code is a fully compressible, Eulerian, finite volume fluid dynamics code based on the piecewise parabolic method (PPM) hydrodynamics scheme. It is based on the legacy astrophysics code PROMETHEUS (Fryxell, Muller, & Arnett 1989) and is fully parallelized using the domain decomposition method with message passing handled via the Message Passing Interface (MPI), hence its name is a portmanteau of PROMETHEUS and MPI.

The code is Fortran with over 150k lines of code. An investigation into a GPU version written in C has been previously investigated by the PI where one of the main subroutines (the evaluation of the equation of state) was ported. We aim to build on this and move more of the application over to the GPU. We aim to make use of CUDA Fortran and OpenACC to make this port possible without rewriting large parts of the code.

The code is not open source and is used by a relatively small community. A port to GPUs would enable researchers to run larger simulations much faster than would otherwise be possible.

The Team

The team is based around the Cambridge RSE team. The team has multiple years experience writing and running CFD code and has both written from scratch, and translated existing codes from CPU to GPU. The team is beginning a long-term collaboration with the researchers that are using the code.

The aim of the hackathon is to investigate whether the approach of using CUDA Fortran or OpenACC is appropriate for this kind of code. We hope to leave with more experience of using these tools in real application code. We would also like to learn more about the integration of these methods with the rest of the Nvidia profiling and code analysis tools.

Team CURSE getting guidance

The Process

The PROMPI code is a stencil type CFD code. However large parts of the code, and some of the most computationally expensive parts are point-wise evaluations of e.g. the equation of state. These sections can be complex, with loops over lookup tables etc.