pub struct CutlassI8Gemm {
pub tb_m: usize,
pub tb_n: usize,
pub tb_k: usize,
pub warp_m: usize,
pub warp_n: usize,
pub warp_k: usize,
pub inst_m: usize,
pub inst_n: usize,
pub inst_k: usize,
pub stages: usize,
}Expand description
A CUTLASS int8 tensorop-GEMM config. cuBLAS’s own int8 GEMM kernel IS a CUTLASS kernel —
disassembly of cublasGemmEx (CUDA_R_8I, TN, 2048^3, sm_86) shows it dispatch
cutlass_80_tensorop_i16832gemm_s8_256x128_64x3_tn_align16. Because CUTLASS is open source, our
compiler can emit the same kernel and reach cuBLAS parity (measured 99.6-100.0% head-to-head),
instead of approximating it with a hand-written kernel that tops out at ~90% (ptxas will not schedule
our from-scratch source into the perfect pointer-increment addressing CUTLASS’s templates coax out of it).
Fields§
§tb_m: usize§tb_n: usize§tb_k: usize§warp_m: usize§warp_n: usize§warp_k: usize§inst_m: usize§inst_n: usize§inst_k: usize§stages: usizeImplementations§
Source§impl CutlassI8Gemm
impl CutlassI8Gemm
Sourcepub fn cublas_reference() -> Self
pub fn cublas_reference() -> Self
The exact config cuBLAS dispatches (i16832gemm_s8_256x128_64x3_tn): 256x128x64 threadblock, 64x64x64 warp, m16n8k32 IMMA, 3-stage. Verified 99.6-100.0% parity — cuBLAS IS this kernel.
Trait Implementations§
Source§impl Clone for CutlassI8Gemm
impl Clone for CutlassI8Gemm
Source§fn clone(&self) -> CutlassI8Gemm
fn clone(&self) -> CutlassI8Gemm
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for CutlassI8Gemm
impl Debug for CutlassI8Gemm
Source§impl PartialEq for CutlassI8Gemm
impl PartialEq for CutlassI8Gemm
impl Copy for CutlassI8Gemm
impl Eq for CutlassI8Gemm
impl StructuralPartialEq for CutlassI8Gemm
Auto Trait Implementations§
impl Freeze for CutlassI8Gemm
impl RefUnwindSafe for CutlassI8Gemm
impl Send for CutlassI8Gemm
impl Sync for CutlassI8Gemm
impl Unpin for CutlassI8Gemm
impl UnsafeUnpin for CutlassI8Gemm
impl UnwindSafe for CutlassI8Gemm
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
Mutably borrows from an owned value. Read more
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>
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>
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)
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)
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
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.