gPLUTO is a full C++ rewrite of the PLUTO code, and it is meant to replace the previous CPU-only version. This is effort is supported by the SPACE (Scalable Parallel Astrophysical Codes for Exascale) EU Center of Excellence.
The GPU porting of the code started with a simplified mini-app (∼1,000 lines). gPLUTO shares the same underlying philosophy as its predecessor (PLUTO) and it targets exa-scale HPC resources by providing full support for CPU and GPU parallel computations. The design of gPLUTO has been adapted and extended for optimal exploitation and integration with the OpenACC programming model (OpenMP is being considered as well). While the code does not include all the algorithms present in its predecessor, new features are being added continuously. I/O retains its original structure.
Access to the public version (v. 0.65) of gPLUTO is provided through GitLab repository:
https://gitlab.com/PLUTO-code/gPLUTO
At present, gPLUTO is fully operative using
- Cartesian coordinates;
- Hydro (HD), Magnetohydrodynamics (MHD) and relativistic (RHD and RMHD) modules;
- RK time stepping.
High order finite volume, resistive RMHD, additional geometries, diffusion physics (viscosity, thermal conduction, resistivity), particles support and additional features wil be available in the near future.
Separate efforts to include General Relativity, Lagrangian particles and a built-in adaptive mesh refinement A(MR) library are currently underway.
System requirements
Depending on the desired configuration (serial/parallel, CPUs/GPUs) different system requisites must be satisfied in order to compile and run gPLUTO. These consist of a minimal set plus additional libraries:
- Minimal prerequisites: C++ Compiler, GNU make, Python3
- Parallel builds: MPI library
- GPU support: NVIDIA HPC-SDK (compilers, libraries and tools)