pub struct KernelEstimate {
pub cubes: Option<u64>,
pub cube: CubeFootprint,
pub demand: Option<Work>,
pub staging: Option<CubeStaging>,
pub work: Option<UnitWork>,
}Expand description
A kernel’s performance, estimated: what the kernel a routine prepared asks of a device, counted from its own walk, before any device is known.
One vocabulary for every routine of every family, so kernels of different routines are
compared on the same quantities. It starts from the kernel’s grid (its From<&Grid>), and
each part has one owner, which sets it whole: the problem its demand, the
component placing the stage’s reads its staging, the microkernel holding
the work in its units its work. A routine sets what it owns and hands the
estimate to its microkernel, which does the same, as the kernel hands down its walk.
Counts only: every rate, latency and capacity is the device’s. A part left unset is a routine that forgot its own.
Fields§
§cubes: Option<u64>Cubes the grid spawns; None where the count is only known at launch.
cube: CubeFootprintWhat one cube holds of its worker.
demand: Option<Work>What the problem asks for, whichever routine runs it: its arithmetic, and the bytes its
operands hold, what a kernel reading each byte once would move. The same Work an
autotune table’s roofline is drawn from.
staging: Option<CubeStaging>§work: Option<UnitWork>Trait Implementations§
Source§impl Clone for KernelEstimate
impl Clone for KernelEstimate
Source§impl Debug for KernelEstimate
impl Debug for KernelEstimate
Source§impl From<&Grid> for KernelEstimate
impl From<&Grid> for KernelEstimate
Source§impl PartialEq for KernelEstimate
impl PartialEq for KernelEstimate
impl StructuralPartialEq for KernelEstimate
Auto Trait Implementations§
impl Freeze for KernelEstimate
impl RefUnwindSafe for KernelEstimate
impl Send for KernelEstimate
impl Sync for KernelEstimate
impl Unpin for KernelEstimate
impl UnsafeUnpin for KernelEstimate
impl UnwindSafe for KernelEstimate
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneExpand for Twhere
T: Clone,
impl<T> CloneExpand for Twhere
T: Clone,
fn __expand_clone_method(&self, _: &Scope) -> T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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