Skip to main content

NumericsKnobs

Struct NumericsKnobs 

Source
pub struct NumericsKnobs {
    pub fidelity: Fidelity,
    pub fp32_dest_acc: bool,
    pub packer_l1_acc: bool,
    pub pcc_floor: f64,
}
Expand description

The three numerics knobs the measurement harness varies, and the PCC the program then requires of itself. scripts/tt-matmul-measure.sh sets them as LOGOS_TT_FIDELITY / _FP32 / _L1ACC, and every ledger row records what the program PRINTED rather than what was asked for — so this parser is part of the measurement contract, not a convenience.

★ SALVAGED FROM THE RETIRED EMITTER, and narrowed on the way in. It used to carry its own math-fidelity enum beside this crate’s Fidelity — two spellings of one concept, each with its own parse/as_str — and a register-budget helper that halved the tile count under fp32 accumulate while taking a SECOND chip descriptor to do it. SpatialTarget::effective_acc_tiles already expresses that exactly, so the dependency on a duplicate description of the part dissolved rather than moved.

Fields§

§fidelity: Fidelity§fp32_dest_acc: bool

Accumulate in fp32 in the register file: halves the tile budget, raises PCC.

§packer_l1_acc: bool

Accumulate K-block partials in local memory through the packer instead of reloading registers.

§pcc_floor: f64

The PCC the emitted program requires of itself before it prints LOGOS_MM_PASS.

Implementations§

Source§

impl NumericsKnobs

Source

pub fn from_env() -> Result<Self, String>

Read the harness’s environment contract.

Source

pub fn from_vars( fidelity: Option<&str>, fp32: Option<&str>, l1acc: Option<&str>, ) -> Result<Self, String>

The pure core of NumericsKnobs::from_env — every refusal is typed and names the variable, so a mistyped knob stops the measurement instead of silently recording a different program.

Source

pub fn policy(&self) -> NumericsPolicy

The numerics policy these knobs express: fp32 accumulate is what keeps partial sums exact.

Trait Implementations§

Source§

impl Clone for NumericsKnobs

Source§

fn clone(&self) -> NumericsKnobs

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for NumericsKnobs

Source§

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

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

impl Default for NumericsKnobs

Source§

fn default() -> Self

★ ttnn’s OWN bf16 default numerics — HiFi2, bf16 dest-accumulate — so a head-to-head against the vendor is matched by construction rather than by remembering to pass a flag. Defaulting to HiFi4 would silently compare our four-pass arithmetic against the vendor’s two-pass and call the difference a compiler result.

Source§

impl PartialEq for NumericsKnobs

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for NumericsKnobs

Source§

impl StructuralPartialEq for NumericsKnobs

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
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.
§

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

§

fn vzip(self) -> V

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,