pub enum CostCalibration {
Measured,
ArchDefault,
Uncalibrated,
}Expand description
Where a cost model’s numbers actually came from.
The distinction is load-bearing and rlx used to erase it. RocmCostModel
falls back to sgemm_gflops: 10_000.0 when ROCm is absent; MetalHwModel
falls back to AppleGpuFamily::Unknown => (300e9, 180e9, 60e9). Both then
feed fastest_device_for, which ranks devices against each other — so on an
unrecognized GPU rlx would confidently place a graph using invented
throughput, and say nothing.
CAKE B.5 states the rule this implements: “Timing-model coverage is separately evidence-gated: B200 is the measured baseline, H100 is calibrated independently, and other targets report a coverage limitation instead of inheriting estimates.” Reporting a coverage limitation is strictly more useful than a confident guess, because a caller can act on it.
Variants§
Measured
Measured on this machine (a calibration cache exists, or the model probed the device). Comparisons across such models are meaningful.
ArchDefault
Compile-time constants chosen for this specific detected architecture. Reasonable, but not measured here — treat cross-device comparisons as indicative rather than authoritative.
Uncalibrated
The architecture was not recognized, so the numbers are a generic guess. Not a basis for ranking one device against another.
Implementations§
Trait Implementations§
Source§impl Clone for CostCalibration
impl Clone for CostCalibration
Source§fn clone(&self) -> CostCalibration
fn clone(&self) -> CostCalibration
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for CostCalibration
Source§impl Debug for CostCalibration
impl Debug for CostCalibration
impl Eq for CostCalibration
Source§impl Ord for CostCalibration
impl Ord for CostCalibration
Source§fn cmp(&self, other: &CostCalibration) -> Ordering
fn cmp(&self, other: &CostCalibration) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for CostCalibration
impl PartialEq for CostCalibration
Source§impl PartialOrd for CostCalibration
impl PartialOrd for CostCalibration
impl StructuralPartialEq for CostCalibration
Auto Trait Implementations§
impl Freeze for CostCalibration
impl RefUnwindSafe for CostCalibration
impl Send for CostCalibration
impl Sync for CostCalibration
impl Unpin for CostCalibration
impl UnsafeUnpin for CostCalibration
impl UnwindSafe for CostCalibration
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> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
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.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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