Skip to main content

EncodeDeploymentDecision

Enum EncodeDeploymentDecision 

Source
pub enum EncodeDeploymentDecision {
    Met {
        measured_rows_per_sec: f64,
        target_rows_per_sec: f64,
    },
    Unmet {
        measured_rows_per_sec: f64,
        target_rows_per_sec: f64,
    },
    Undetermined {
        reason: EncodeDecisionBlocked,
    },
}
Expand description

Tri-state Stage-3 encode deployment / amortized-surrogate decision (#988, #1412).

The decision the throughput gate exists to make is empirical: does the EXACT per-row encode clear the 100_000 rows/sec/GPU deployment target on a real device? Only a real device measurement can answer it:

  • Self::Met — a device measurement CLEARED the target: ship the exact encode; the certified amortized surrogate is NOT needed.
  • Self::Unmet — a device measurement MISSED the target: the certified amortized surrogate becomes justified.
  • Self::Undetermined — no device measurement is available. The decision is BLOCKED on hardware; it is neither “surrogate unneeded” nor “surrogate justified”.

The critical anti-green-wash property (#1412): there is NO constructor that takes a CPU rate. A CPU measurement, however fast, can never move the decision out of Self::Undetermined. Projecting a CPU rate through an assumed CPU→GPU factor to declare the target met was the exact #1412 defect and is structurally impossible here — Self::Met / Self::Unmet come only from Self::from_device_measurement with engaged == true.

Variants§

§

Met

A device measurement established the deployment target.

Fields

§measured_rows_per_sec: f64

The measured device rows/sec that cleared the target.

§target_rows_per_sec: f64

The target it was compared against.

§

Unmet

A device measurement fell short of the deployment target.

Fields

§measured_rows_per_sec: f64

The measured device rows/sec that missed the target.

§target_rows_per_sec: f64

The target it was compared against.

§

Undetermined

No device measurement is available; the decision is blocked on hardware.

Fields

§reason: EncodeDecisionBlocked

Why no device measurement could be made.

Implementations§

Source§

impl EncodeDeploymentDecision

Source

pub fn from_device_measurement( engaged: bool, measured_rows_per_sec: f64, ) -> Self

The ONLY path to a Met/Unmet decision: a device measurement that actually engaged the device and produced a usable rate. engaged == false (false routing / CPU decline) or a non-finite / non-positive rate yields Self::Undetermined — never a fabricated pass or fail.

Source

pub fn from_device_measurement_against( engaged: bool, measured_rows_per_sec: f64, target_rows_per_sec: f64, ) -> Self

Self::from_device_measurement against an explicit target (for tests that probe the decision logic without the global target constant).

Source

pub fn blocked(reason: EncodeDecisionBlocked) -> Self

Construct the blocked decision for a host that cannot measure the exact encode on a device. This is the honest CPU-only / no-device-kernel outcome — the deployment target is left undetermined rather than projected.

Source

pub fn surrogate_unneeded(&self) -> bool

True ONLY when a device measurement cleared the target: the exact encode ships and no surrogate is built. Never true from a CPU proxy.

Source

pub fn surrogate_justified(&self) -> bool

True ONLY when a device measurement missed the target: the certified amortized surrogate becomes justified. Never true without a measurement.

Source

pub fn is_undetermined(&self) -> bool

True when no device measurement is available and the decision is blocked on hardware (neither Self::surrogate_unneeded nor Self::surrogate_justified).

Trait Implementations§

Source§

impl Clone for EncodeDeploymentDecision

Source§

fn clone(&self) -> EncodeDeploymentDecision

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 Copy for EncodeDeploymentDecision

Source§

impl Debug for EncodeDeploymentDecision

Source§

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

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

impl PartialEq for EncodeDeploymentDecision

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 StructuralPartialEq for EncodeDeploymentDecision

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> Boilerplate for T
where T: Copy + Send + Sync + Debug + PartialEq + 'static,

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> ByRef<T> for T

Source§

fn by_ref(&self) -> &T

Source§

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

Source§

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

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> DistributionExt for T
where T: ?Sized,

Source§

fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> T
where Self: Distribution<T>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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

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

Source§

fn vzip(self) -> V