Skip to main content

LaneShim

Struct LaneShim 

Source
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

Source

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.

Source

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

Source

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.

Source

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 Clone for LaneShim

Source§

fn clone(&self) -> LaneShim

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LaneShim

Source§

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

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

impl Shim for LaneShim

Source§

fn name(&self) -> String

The chip and the configuration it answers for, e.g. cuda-lane:rtx3060:TwoPassInt8.
Source§

fn supports(&self, class: ClassId) -> Support

What the chip’s link does with 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>

Whether the chip’s link builds 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>

The quantized form consumer reads its operand operand in, or None for one it reads as its values.
Source§

fn rules(&self) -> Vec<(Position, ChipRule<'_>)>

The chip’s own rules, each linked into the table where its position says.
Source§

fn numerics(&self) -> Option<Contract>

The numerics contract of the knob point the chip answers for, or None while the chip has not declared it.

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

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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

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

§

fn vzip(self) -> V

§

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

§

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

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,