gevolution 2.0¶
gevolution is a particle-mesh cosmological \(N\)-body code designed to evolve gravity using a weak-field formulation of general relativity. It is particularly useful for studying relativistic effects, radiation and massive neutrinos, metric light cones, and extensions of the standard cosmological model.
Version 2.0 replaces the CPU-only MPI execution model with three layers of parallelism:
- MPI distributes the simulation volume using a two-dimensional process grid.
- OpenMP uses the CPU cores assigned to each MPI rank.
- CUDA offloads compute-intensive mesh and particle operations to NVIDIA GPUs.
flowchart LR
A[MPI process grid] --> B[One domain per rank]
B --> C[OpenMP host work]
B --> D[CUDA device work]
D --> E[Particle-mesh kernels]
D --> F[Mesh update kernels]
C --> G[Fourier-space loops and I/O]
D <--> H[CUDA-aware or host-staged MPI]
When to use gevolution¶
Use gevolution when fixed-resolution particle-mesh simulations and a relativistic treatment of gravity match the scientific question. It supports both GR and Newtonian runs, making controlled comparisons straightforward.
gevolution is not a replacement for adaptive-mesh or tree codes when small-scale force resolution, hydrodynamics, or baryonic feedback are central. The code uses a uniform mesh and contains no hydrodynamics.
What is new in version 2.0¶
- GPU acceleration using CUDA and a GPU-enabled LATfield2 backend.
- One MPI rank per GPU as the preferred production layout.
- OpenMP shared-memory parallelism for host-side work.
- A rewritten row-oriented particle handler using dense device arrays and CUB sorting.
- GPU mesh loops through
lattice_for_eachcallable structs. - A distributed FFT pipeline using cuFFT, FFTW where alignment requires it, and either CUDA-aware or host-staged MPI.
- Device-side staging for particle and pixel output before host-side file I/O.
Status and limitations¶
| Capability | Status |
|---|---|
| Basic IC generator and CLASS transfer functions | Supported |
| Read initial data from disk | Supported |
| GR and Newtonian evolution | Supported |
| HDF5, Gadget-2, spectra, and light-cone output | Supported |
| LATfield2 external I/O server | Unsupported |
| GPU hibernation/checkpoint writing | Unsupported |
prevolution and FalconIC generators |
Removed |
| RELIC/second-order initial conditions | Optional, not production-supported by default |
Citation, licence, and support¶
The software is released under the MIT licence. The development repository is gevolution-code/gevolution-2.0. Until the gevolution 2.0 paper has a formal citation, cite the established gevolution publications listed in the repository README and describe use of the GPU/developer-preview version.
For gevolution questions and bug reports, contact the gevolution developers or open a GitHub issue. LATfield2-specific issues should be reported through gevolution-code/LATfield2.
Start with the first simulation, then consult the migration guide when moving from gevolution 1.3.