Struct SizeRegime¶
Defined in File size_regime.hpp
Struct Documentation¶
-
struct SizeRegime¶
Per-space extents and per-rank CSV moment tables that define one size regime for a dry-run replay. Extents are element counts; CSV moments are power means over occupied pairs (PNO) or singles (OSV).
Public Functions
-
inline std::size_t extent(Index const &ix) const¶
- Returns:
the flat extent of
ix'sspace; throwsstd::out_of_rangeif the space is not present inspace_extent(fail loud rather than silently defaulting to 1).
-
inline container::svector<std::size_t> const &slice_extents(Index const &ix) const¶
- Returns:
ix'sspace batch-slice-extent sequence, or an empty span if the space has no partition recorded (=> the caller falls back to uniform target_batch_size blocks). Never throws.
-
inline double inner_pow(Index const &composite, std::size_t k) const¶
- Returns:
the k-th power-mean moment for a proto-indexed CSV/PNO composite index (
kclamped to 0..4), orpow(extent, k)for a plain (non-composite) index. Rank is determined by the number of proto indices: 1 => OSV (occupied single), 2 => PNO (occupied pair), >= 3 => the rank-specific csv_moment_by_rank table if present, else the PNO (rank-2) table.
Public Members
-
std::map<std::wstring, std::size_t> space_extent¶
-
std::map<std::wstring, container::svector<std::size_t>> space_slice_extents¶
Optional per-space batch partition: the element extent of each realized batch slice along the space’s batch axis, keyed by space base_key, in order. Empty (default) => the dry-run batches a mode into uniform target_batch_size blocks (backend-model-agnostic fallback). When present for a batch axis, ResultDryRun::mode_batches uses this partition directly (accumulated to [lo,hi) ranges), so the dry-run’s batch count — hence its recompute — matches whatever the wet backend realizes, even when a tile is coarser than target_batch_size.
The dry-run backend deliberately does not know how these were derived: the caller converts its backend’s structure into slice extents and supplies them here, so a new backend model is supported without touching dry-run eval internals. For a tile-based wet backend,
batch_slice_extents_from_tiles is the ready-made converter. The extents must sum to space_extent.
-
std::array<double, 5> csv_pno_moment = {1.0, 1.0, 1.0, 1.0, 1.0}¶
-
std::array<double, 5> csv_osv_moment = {1.0, 1.0, 1.0, 1.0, 1.0}¶
-
std::map<std::size_t, std::array<double, 5>> csv_moment_by_rank¶
-
inline std::size_t extent(Index const &ix) const¶