gPLUTO
gPLUTO is the next‑generation, GPU‑ready evolution of the PLUTO MHD code: a full C++ rewrite designed from the ground up for exascale computing on CPUs and GPUs. Developed within the EU SPACE Center of Excellence, gPLUTO keeps the proven PLUTO philosophy while modernizing the architecture for GPU-accelerated HPC. The code already supports Cartesian, cylindrical, and spherical geometries; HD, MHD, RHD, and RMHD physics; and RK time stepping, with diffusion physics, particles, GR, and AMR actively under development. Although not yet feature‑complete compared to PLUTO, gPLUTO is rapidly evolving and is positioned as the long‑term production platform for large‑scale plasma and astrophysical simulations. The public version (v0.88, Nov 2025) is available on GitLab, along with a hands‑on tutorial to get started quickly.
gPLUTO on Dartmouth's Discovery Cluster¶
We provide libraries to fulfill gPLUTO's dependencies on Discovery. You can load the required modules by running the following in your Discovery shell:
Discovery Cluster
If you do not have access to the EPaCO lab space, please check our groups' allocations and user policies.
Installation and Quickstart¶
Follow the installation instructions in the gPLUTO documentation. When selecting a makefile, the architecture preset linux.mpicxx.defs. In the EPaCO‑provided environment, the correct GPU‑enabled MPI distribution will be detected automatically.
Running gPLUTO on GPU nodes
For interactive compilation and execution of gPLUTO, it is best to request a GPU node. You can do so with:
If you have access to EPaCO resources, you can add --account=epaco, or respective accounts of other groups.
gPLUTO provides the Python library pyPLUTO for plotting and visualizing simulation data. The EPaCO conda environment already includes the required Python packages, so no additional installation is needed.
A minimal example to load and inspect PLUTO output data is shown below:
This command loads all available field variables from the current directory and prints a summary of the dataset. The Load function and related tools are documented in detail in the pyPLUTO documentation.