Skip to main content

RequiredReport

Struct RequiredReport 

Source
pub struct RequiredReport {
    pub schema_version: u32,
    pub op: String,
    pub backend: RequiredBackend,
    pub seed: u64,
    pub tolerance: Option<f64>,
    pub tolerance_f64_bits: u64,
    pub status: RequiredStatus,
    pub reason: Option<String>,
    pub reference: Option<RawOutput>,
    pub actual: Option<RawOutput>,
    pub metrics: Option<NumericalMetrics>,
}

Fields§

§schema_version: u32§op: String§backend: RequiredBackend§seed: u64§tolerance: Option<f64>

None only when the submitted tolerance was non-finite. Its original bits are always retained below so invalid inputs remain auditable.

§tolerance_f64_bits: u64§status: RequiredStatus§reason: Option<String>§reference: Option<RawOutput>§actual: Option<RawOutput>§metrics: Option<NumericalMetrics>

Implementations§

Source§

impl RequiredReport

Source

pub fn is_passed(&self) -> bool

This convenience describes a freshly generated report. Consumers of stored reports must replay the raw data and verify execution provenance; deserializing a self-reported status is not a release authorization.

Examples found in repository?
examples/backend_numerics.rs (line 156)
116fn run(args: Args) -> Result<(), String> {
117    let expected_elements = args.config.validate()?;
118    let mut file = OpenOptions::new()
119        .write(true)
120        .create_new(true)
121        .open(&args.report)
122        .map_err(|error| format!("create report {}: {error}", args.report.display()))?;
123    let is_context = matches!(args.config.op, config::Operation::MetalContext { .. });
124    let mut document = Document {
125        schema_version: 1,
126        output_shape: args.config.op.output_shape(),
127        expected_output_elements: expected_elements,
128        configured_precision: args.config.precision(),
129        executed_precision: None,
130        execution_path: args.config.op.execution_path(),
131        coverage: if is_context {
132            "Legacy MetalContext F32 compute/blit/compute, checked initial/reused/independent submissions and post-Drop data. Drop exposes no driver status. Excludes quantized kernels, production-plan dispatch and model performance."
133        } else {
134            "Only the selected Backend trait operation, shape and fixed adapter precision; excludes production-plan dispatch, quantized Marlin, paged attention, full models and performance claims"
135        },
136        submission_phases: is_context.then_some(&SUBMISSION_PHASES),
137        submission_metrics: None,
138        started_at: chrono::Utc::now().to_rfc3339(),
139        completed: false,
140        finished_at: None,
141        execution_elapsed_ms: None,
142        result: None,
143        config: args.config,
144    };
145    write_document(&mut file, &document)?;
146    let started = Instant::now();
147    let mut result = document.config.execute();
148    bind_output_shape(&mut result, expected_elements);
149    document.submission_metrics = bind_submission_segments(&mut result, &document.config);
150    document.execution_elapsed_ms = Some(started.elapsed().as_secs_f64() * 1000.0);
151    if result.actual.is_some() {
152        document.executed_precision = Some(document.config.precision());
153    }
154    document.completed = true;
155    document.finished_at = Some(chrono::Utc::now().to_rfc3339());
156    let passed = result.is_passed();
157    let failure = result
158        .reason
159        .clone()
160        .unwrap_or_else(|| format!("required backend result: {:?}", result.status));
161    document.result = Some(result);
162    write_document(&mut file, &document)?;
163    if passed {
164        println!(
165            "Numerical check completed; report: {}",
166            args.report.display()
167        );
168        Ok(())
169    } else {
170        Err(format!("{failure}; report: {}", args.report.display()))
171    }
172}

Trait Implementations§

Source§

impl Clone for RequiredReport

Source§

fn clone(&self) -> RequiredReport

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RequiredReport

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for RequiredReport

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for RequiredReport

Source§

fn eq(&self, other: &RequiredReport) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for RequiredReport

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for RequiredReport

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more