System¶

These are low-level system options set up once per program execution, such as enabling GPU. They are not loaded by the Problem definition but are used when Setting up problems.

struct System

Set up system parameters defined once at program startup.

Todo:

Add OpenMP options

Add MPI options

Add Logger verbosity

Public Members

std::map<std::string, std::string> environment

Environment variables used for program setup/diagnostic.

std::optional<Device> device

Optional: activate GPU.

struct Device

Set up GPU capabilities and debugging options.

Stream sharing and synchronization might be helpful for debugging potential race conditions or improving timing accuracy (at the cost of reducing performance).

The CUDA heap and stack sizes may be needed for VecGeom, which has dynamic resource requirements.

Todo:

Move the CELER_DEVICE_ASYNC environment variable here

Public Members

size_type stack_size = {}

Per-thread CUDA stack size (ignored if zero) [B].

size_type heap_size = {}

Global dynamic CUDA heap size (ignored if zero) [B].