Celeritas 0.7+cc8801873
Loading...
Searching...
No Matches
Public Attributes | Static Public Attributes | List of all members
celeritas::inp::CoreStateCapacity Struct Reference

Set up per-process state/buffer capacities for the main tracking loop. More...

#include <Control.hh>

Inheritance diagram for celeritas::inp::CoreStateCapacity:
Inheritance graph
[legend]

Public Attributes

std::optional< size_typeinitializers
 Maximum number of queued primaries+secondaries.
 
std::optional< size_typesecondaries
 Maximum number of secondaries created per step.
 
std::optional< size_typeevents
 Maximum number of simultaneous events.
 
- Public Attributes inherited from celeritas::inp::StateCapacity
std::optional< size_typeprimaries {}
 Maximum number of primaries that can be buffered before stepping.
 
std::optional< size_typetracks {}
 Maximum number of track slots to be simultaneously stepped.
 

Static Public Attributes

static constexpr size_type cpu_tracks = 4096
 Default values.
 
static constexpr size_type gpu_tracks = 1048576
 
static constexpr size_type primaries_per_track = 1
 
static constexpr size_type initializers_per_track = 8
 
static constexpr size_type secondaries_per_track = 2
 

Detailed Description

Set up per-process state/buffer capacities for the main tracking loop.

Increasing these values increases resource requirements with the trade-off of (usually!) improving performance. A larger number of tracks in flight means improved performance on GPU because the standard kernel size increases, but it also means higher memory usage because of the larger number of full states. More initializers are necessary for more (and higher-energy) tracks when lots of particles are in flight and producing new child particles. More secondaries may be necessary if physical processes that produce many daughters (e.g., atomic relaxation or Bertini cascade) are active. The number of events in flight primarily increases the number of active tracks, possible initializers, and produced secondaries (NOTE: see #1233 ). Finally, the number of primaries is the maximum number of pending tracks from an external application before running a kernel to construct initializers and execute the stpeping loop.

Note
The primaries was previously named auto_flush .
Previously, SetupOptions and celer-g4 treated these quantities as "per stream" whereas celer-sim used "per process".

Defaults:


The documentation for this struct was generated from the following file: