#[repr(u32)]pub enum DetectorProfile {
D16 = 16,
D64 = 64,
D128 = 128,
D205 = 205,
D512 = 512,
D1024 = 1_024,
D2000 = 2_000,
}Expand description
R.9 — detector-axis expansion profiles. Seven profile IDs are
reserved (D16, D64, D128, D205, D512, D1024, D2000).
At HEAD D16, D64, and D128 are fully implemented:
D16 is the legacy 16-motif profile (R.9.a, audit-mode reference);
D64 is the R.9.b/R.10/R.11 throughput path that drove the R.13
~55× full-pipeline campaign reduction; D128 is the R.9.d.1
scaling-ladder proof (commit 99a0f3b, 16 motifs × 8 variants,
wide-digest baseline with R.10b compact-pack deferred). D205
and the wider profiles still reserve their identity + registry-
hash slots, deferred to paper §16.
Why this exists. R.7 reported 2.9× GPU Layer B at K=64 with the 16-detector court. R.8 showed the dominant cost was the host bank + digest plumbing, not the kernel math; R.8.5 + R.11 cleared those bottlenecks down to ~72 ms at 256×4096 K=1. With the launch + finalize floor squeezed, more detectors per cell is the load-bearing way to keep the GPU saturated. The Atlas continuation calls for 2 000+ algebra-generated detectors; R.9 brings 16 → 2 000 inside this prior-art crate so the R.13 headline benchmark can run on the architecture’s intended scale.
Canonical 16-detector preservation: D16 derives the same
registry_hash bytes that registry_hash returns. Audit-mode
golden hashes are not touched by R.9.a. Wider profiles compose
the canonical 16-motif hash with a profile-id + active-count
suffix so their detector_registry_hash is deterministic and
distinct per profile.
Variants§
D16 = 16
16 detectors. The canonical court. Byte-identical to the pre-R.9 path; Audit golden hashes pin this profile.
D64 = 64
64 detectors. v1 expansion (4 parameter variants per family). Scaffolded in R.9.a; wide-mask kernel lands in R.9.b.
D128 = 128
128 detectors. v1 expansion (8 variants per family).
D205 = 205
205 detectors. Mirrors the dsfb-debug taxonomy size — the “mature 205-detector court” the user named in the campaign brief.
D512 = 512
512 detectors. Mid-Atlas density.
D1024 = 1_024
1024 detectors. Approaching Atlas headline.
D2000 = 2_000
2000 detectors. Headline target per the user’s locked R.9 scope. The R.13 ≥10× gate is measured here.
Implementations§
Source§impl DetectorProfile
impl DetectorProfile
Sourcepub const fn active_detector_count(self) -> u32
pub const fn active_detector_count(self) -> u32
Number of active detector bits this profile carries. Always equals the enum’s numeric value; surfaced as a method for readability at call sites.
Sourcepub const fn name(self) -> &'static str
pub const fn name(self) -> &'static str
Short stable identifier string. Used inside the canonical per-profile registry-hash derivation; never localised or reformatted.
Sourcepub const fn mask_word_count(self) -> u32
pub const fn mask_word_count(self) -> u32
Width of the per-cell detector bitset in 64-bit words. R.9.b
will pin DetectorCell to [u64; MASK_WORDS] so 2 048 bits
fit at the headline profile. D16 still uses the legacy
u32 cell field in R.9.a; the wider mask only activates
when the wide-kernel commit lands.
Sourcepub fn registry_hash(self) -> [u8; 32]
pub fn registry_hash(self) -> [u8; 32]
Returns the canonical per-profile detector_registry_hash
that the contract pins for this profile.
Byte stability: DetectorProfile::D16.registry_hash() == motif::registry_hash() — the canonical 16-detector court’s
hash is unchanged. Wider profiles compose:
sha256(
"DSFB-GPU-DEBUG:detector-profile:v1\0"
|| canonical_motif_registry_hash
|| profile_name_ascii
|| 0x00
|| active_detector_count_le_u32
)The domain prefix prevents the wider profiles’ hashes from
colliding with any other 32-byte commitment in the chain.
The active count is included so a future R.9.b that
reorganises the 64/128/etc variant table without changing
the profile-id-string would still produce a fresh hash if
the count changed. The R.9.b commit may extend this
derivation with the parameter-variant table; that’s a
v2 derivation when it lands.
Trait Implementations§
Source§impl Clone for DetectorProfile
impl Clone for DetectorProfile
Source§fn clone(&self) -> DetectorProfile
fn clone(&self) -> DetectorProfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DetectorProfile
impl Debug for DetectorProfile
Source§impl PartialEq for DetectorProfile
impl PartialEq for DetectorProfile
Source§fn eq(&self, other: &DetectorProfile) -> bool
fn eq(&self, other: &DetectorProfile) -> bool
self and other values to be equal, and is used by ==.