ORB5X 1.0.0
Performance-portable global electromagnetic gyrokinetic PIC code
Loading...
Searching...
No Matches
Getting started

Requesting source access

The ORB5X GitHub repository is private. Request access by emailing info@paidynamics.ch with your name, affiliation, intended use, and GitHub username. Clone and authentication instructions are provided after the request is approved.

Requirements

ORB5X requires a C++17 compiler, CMake 3.18 or newer, MPI (C and C++), Kokkos, parallel HDF5 with its C++ interface, FFTW3, and LAPACK. CMake first searches for installed packages. Individual dependencies can instead be fetched and built by enabling the corresponding ORB5X_BUILD_*_FROM_SOURCE option described in the project README.

CPU build

cmake -S . -B build-cpu \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
-DKokkos_ENABLE_SERIAL=ON
cmake --build build-cpu -j 4

For a threaded CPU build, select the Kokkos OpenMP backend and use a compiler with host OpenMP support.

NVIDIA GPU build

Select both the CUDA backend and the exact Kokkos architecture. For an NVIDIA A100, for example:

cmake -S . -B build-a100 \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
-DKokkos_ENABLE_CUDA=ON \
-DKokkos_ENABLE_SERIAL=ON \
-DKokkos_ARCH_AMPERE80=ON
cmake --build build-a100 -j 4

Use the matching Kokkos architecture flag for other accelerators. Consult Supported_HPC_machines.md for known machine configurations.

Running

ORB5X reads an ORB5-style input file. Run from a case directory so relative profile, equilibrium, checkpoint, and output paths resolve there:

mpirun -np 2 /path/to/build-cpu/orb5x /path/to/input.in

The precise argument handling is implemented by orb5x::ControlAll and orb5x::ReadInput. Start with a supplied benchmark input rather than constructing a production case from scratch.

Tests and reference regressions

cmake -S . -B build-test -DENABLE_TESTS=ON -DKokkos_ENABLE_SERIAL=ON
cmake --build build-test -j 4
ctest --test-dir build-test --output-on-failure

For fresh two-rank comparisons with the Fortran reference:

bash regression/run_multirank_cpu_regression.sh

Building these docs

Install Doxygen (Graphviz is recommended), configure normally, and run:

cmake --build build-cpu --target docs

Open build-cpu/docs/html/index.html. Set -DORB5X_BUILD_DOCS=ON to make the documentation a dependency of the main executable target.