Simphony is a GPU-accelerated optical photon transport framework that couples NVIDIA OptiX with Geant4 for detector simulation workflows. It imports GDML detector geometries, offloads optical photon propagation to NVIDIA GPUs, and provides example applications for Cerenkov, scintillation, torch-driven, and file-driven photon transport studies.
The project builds on Simon Blyth's original Opticks work and adapts that approach for current OptiX- and Geant4-based simulation workflows.
If CUDA 12.1+, NVIDIA OptiX 7+, Geant4 11.3+, CMake 3.22+, and Python 3.10+ are already installed, you can build and test Simphony directly:
git clone https://github.com/BNLNPPS/simphony.git
cd simphony
cmake -S . -B build
cmake --build build
ctest --test-dir buildYou can edit and build without a GPU. Running Simphony and its GPU-backed tests requires a CUDA-capable NVIDIA GPU.
For a ready-made environment, first install Docker Engine. Then install the Dev Container CLI and start the environment:
npm install -g @devcontainers/cli
git clone https://github.com/BNLNPPS/simphony.git
cd simphony
devcontainer up
devcontainer exec bashThe source tree is mounted into the container. Once inside, use the same CMake commands above and rerun only the relevant build and tests as you work.
The root .env selects the OS and toolchain versions. See Choose dependency
versions before changing
them.
To run GPU-backed code, install the NVIDIA Container Toolkit on the host. The Dev Container CLI detects the NVIDIA runtime and requests GPU access automatically.
To take the latest release for a quick test drive, use Docker or Apptainer:
docker run --rm --gpus all ghcr.io/bnlnpps/simphony simg4ox -g tests/geom/raindrop.gdml -m tests/run.mac
apptainer exec --nv docker://ghcr.io/bnlnpps/simphony simg4ox -g /workspaces/simphony/tests/geom/raindrop.gdml -m /workspaces/simphony/tests/run.macSimphony is also available through the BNLNPPS Spack repository:
spack repo add https://github.com/BNLNPPS/spack-packages
spack install simphonySee Getting started for targeted test commands, container lifecycle tips, native builds, and NERSC usage.
The project publishes reusable base images for development environments and
Docker build-cache warmup, along with versioned release and develop images.
Pushes to main update the versioned tags, while tagged releases update the
latest alias. Every tag below links to the Simphony package
page.