pub enum GpuMuda {
Transport {
register_spills: u64,
unnecessary_global_loads: u64,
redundant_shared_stores: u64,
},
Waiting {
barrier_stall_cycles: u64,
memory_stall_cycles: u64,
pipeline_bubbles: u64,
warp_scheduler_idle_pct: f64,
},
Overprocessing {
precision_waste_pct: f64,
redundant_instructions: u64,
unnecessary_bounds_checks: u64,
},
Inventory {
unused_shared_memory_bytes: u64,
unused_registers_per_thread: u32,
occupancy_loss_pct: f64,
},
Motion {
divergent_branches: u64,
branch_efficiency_pct: f64,
loop_overhead_cycles: u64,
},
Defects {
nan_count: u64,
inf_count: u64,
precision_loss_bits: f64,
},
Overproduction {
padding_waste_pct: f64,
inactive_thread_pct: f64,
unused_output_elements: u64,
},
}Expand description
Seven Muda of GPU Compute, plus CPU-specific waste categories.
Variants§
Transport
Muda of Transport: Data moved unnecessarily. Examples: register spills, redundant L2 traffic, unnecessary H2D copies.
Waiting
Muda of Waiting: Hardware resources idle. Examples: barrier stalls, memory latency not hidden, pipeline bubbles.
Fields
Overprocessing
Muda of Overprocessing: More work than necessary. Examples: FP32 when FP16 suffices, unneeded boundary checks, redundant instructions.
Inventory
Muda of Inventory: Resources allocated but unused. Examples: shared memory allocated but not used, registers reserved but unused.
Motion
Muda of Motion: Excessive control flow. Examples: warp divergence, branch overhead, loop overhead.
Defects
Muda of Defects: Incorrect results requiring rework. Examples: NaN propagation, precision loss, numerical instability.
Overproduction
Muda of Overproduction: Computing results that aren’t needed. Examples: padding waste, inactive threads in partial tiles.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for GpuMuda
impl<'de> Deserialize<'de> for GpuMuda
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for GpuMuda
impl RefUnwindSafe for GpuMuda
impl Send for GpuMuda
impl Sync for GpuMuda
impl Unpin for GpuMuda
impl UnsafeUnpin for GpuMuda
impl UnwindSafe for GpuMuda
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<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