pub struct OobReport {
pub oob_loads: u64,
pub oob_stores: u64,
pub oob_atomics: u64,
}Expand description
A tally of out-of-bounds accesses the interpreter silently absorbed during a
tracked run, surfaces the masking that hides GPU/CPU parity hazards. See
reference_eval_oob_report.
Count of out-of-bounds accesses the interpreter silently absorbed during one
tracked run (see crate::reference_eval_oob_report).
The reference interpreter DEFINES OOB loads as zero-fill and OOB stores as a no-op (see the module docstring) so its output stays deterministic. That silent absorption is exactly what MASKS a GPU/CPU parity hazard: an IR program with an ungated data-derived index “works” here but a real GPU (CUDA does no bounds-checking) reads garbage / corrupts memory. This report surfaces the masking so a test can assert a program NEVER relies on it, a correctly-gated program handles an out-of-contract index with explicit control flow and thus records ZERO OOB accesses even on hostile input.
Fields§
§oob_loads: u64Scalar/Bytes loads whose index fell outside the buffer (zero-filled).
oob_stores: u64Stores whose index fell outside the buffer (dropped).
oob_atomics: u64Atomic loads/stores whose index fell outside the buffer.
Implementations§
Trait Implementations§
impl Copy for OobReport
impl Eq for OobReport
impl StructuralPartialEq for OobReport
Auto Trait Implementations§
impl Freeze for OobReport
impl RefUnwindSafe for OobReport
impl Send for OobReport
impl Sync for OobReport
impl Unpin for OobReport
impl UnsafeUnpin for OobReport
impl UnwindSafe for OobReport
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.