Celeritas 0.6.0-84+develop.c75a59b7
|
Set up per-process state/buffer capacities for the main tracking loop. More...
#include <Control.hh>
Public Attributes | |
size_type | initializers {} |
Maximum number of queued primaries+secondaries. | |
std::optional< size_type > | secondaries |
Maximum number of secondaries created per step. | |
std::optional< size_type > | events |
Maximum number of simultaneous events (zero for doing one event at a time) | |
![]() | |
size_type | primaries {} |
Maximum number of primaries that can be buffered before stepping. | |
size_type | tracks {} |
Maximum number of track slots to be simultaneously stepped. | |
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.
primaries
was previously named auto_flush
. SetupOptions
and celer-g4
treated these quantities as "per stream" whereas celer-sim
used "per process".Defaults:
secondaries:
twice the number of track slotsevents:
single event runs at a time