Skip to content

gevolution 2.0

Alpha / developer preview. gevolution 2.0 is under active development. Interfaces and performance characteristics may change, and some features from gevolution 1.3 are not yet available.

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:

  1. MPI distributes the simulation volume using a two-dimensional process grid.
  2. OpenMP uses the CPU cores assigned to each MPI rank.
  3. 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_each callable 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.