pub struct LaneShim {
pub knobs: CudaKnobs,
pub batch: bool,
pub held: Vec<&'static str>,
}Expand description
The lane under its knobs, compiling a form whose products are a batch’s (each row its own sequence) or not, with the
lane rules held back.
Fields§
§knobs: CudaKnobs§batch: bool§held: Vec<&'static str>Implementations§
Source§impl LaneShim
impl LaneShim
Sourcepub fn per_warp(&self, p: &GemvForm) -> usize
pub fn per_warp(&self, p: &GemvForm) -> usize
The output rows a warp of a product’s kernel takes: four for a wide product in a block format met one row at a
time (rows_a_warp), one otherwise.
Sourcepub fn on_tensor_cores(&self, p: &GemvForm) -> bool
pub fn on_tensor_cores(&self, p: &GemvForm) -> bool
Whether a product multiplies on the int8 tensor cores: past the GEMV’s rows, not a batch’s, under the quantized numerics, by checkpoint rows.
Source§impl LaneShim
impl LaneShim
Sourcepub fn attention(activations: Q8MatKind) -> Option<AttentionNumerics>
pub fn attention(activations: Q8MatKind) -> Option<AttentionNumerics>
How a wide chunk’s attention takes its operands at activations: on the f16 tensor cores under one word (its
queries, keys, values and weights rounded to f16, lk_attention_mma); on the int8 tensor cores under two
(lk_attention_i8: each query, key and value row in two words under its largest over 127, each weight times its
value row’s scale in three under the largest of its row in the tile, every product of the words taken); in
f32 under the dequantized numerics.
Sourcepub fn latent_launches(&self, l: &Latent) -> Option<[Launch; 3]>
pub fn latent_launches(&self, l: &Latent) -> Option<[Launch; 3]>
A latent attention’s expanded launches: the key half and the value half over every cached latent row, then the
attention of each head’s split query over its own keys and values — None where one block’s shared memory holds
no head.
Trait Implementations§
Source§impl Shim for LaneShim
impl Shim for LaneShim
Source§fn name(&self) -> String
fn name(&self) -> String
cuda-lane:rtx3060:TwoPassInt8.Source§fn supports(&self, class: ClassId) -> Support
fn supports(&self, class: ClassId) -> Support
class. Every chip answers by a match over every class with no catch-all arm,
so a class added to the registry fails the build until each chip answers it.Source§fn fits(&self, op: &Op, g: &TensorGraph) -> Result<(), String>
fn fits(&self, op: &Op, g: &TensorGraph) -> Result<(), String>
op as it stands — its shapes, its accesses, its destination: Ok, or why not.Source§fn activation(
&self,
consumer: &Op,
operand: usize,
g: &TensorGraph,
) -> Option<QuantFormat>
fn activation( &self, consumer: &Op, operand: usize, g: &TensorGraph, ) -> Option<QuantFormat>
consumer reads its operand operand in, or None for one it reads as its values.Auto Trait Implementations§
impl Freeze for LaneShim
impl RefUnwindSafe for LaneShim
impl Send for LaneShim
impl Sync for LaneShim
impl Unpin for LaneShim
impl UnsafeUnpin for LaneShim
impl UnwindSafe for LaneShim
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,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§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>. 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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
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.§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.