pub struct CutlassNvfp4Gemm {
pub tile_m: usize,
pub tile_n: usize,
pub tile_k: usize,
pub cluster_m: usize,
pub cluster_n: usize,
}Expand description
A CUTLASS Blackwell (sm_100) NVFP4 block-scaled GEMM config — the GPU MODE nvfp4_gemm leaderboard target.
Operands are FP4 (e2m1) with per-16-element FP8 (ue4m3) block scale factors; accumulate FP32; output FP16.
cuBLAS/torch._scaled_mm’s own NVFP4 path is a CUTLASS kernel (as with int8), so our compiler emits the
same CollectiveBuilder GEMM and then pulls ahead by consuming the pre-permuted GPU scale factors directly
(the reference re-derives them from a CPU tensor inside the timed region — free speedup) + epilogue fusion.
NOTE: sm_100 / NVFP4 requires CUTLASS >= 3.7 and a Blackwell GPU; validate on the leaderboard runner
(popcorn submit --mode test --gpu B200), not on sm_86 hardware.
Fields§
§tile_m: usize§tile_n: usize§tile_k: usize§cluster_m: usize§cluster_n: usizeImplementations§
Source§impl CutlassNvfp4Gemm
impl CutlassNvfp4Gemm
Sourcepub fn b200_default() -> Self
pub fn b200_default() -> Self
A Blackwell NVFP4 config sized to the leaderboard’s speed-of-light shapes (K a multiple of 256).
Trait Implementations§
Source§impl Clone for CutlassNvfp4Gemm
impl Clone for CutlassNvfp4Gemm
Source§fn clone(&self) -> CutlassNvfp4Gemm
fn clone(&self) -> CutlassNvfp4Gemm
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CutlassNvfp4Gemm
impl Debug for CutlassNvfp4Gemm
Source§impl PartialEq for CutlassNvfp4Gemm
impl PartialEq for CutlassNvfp4Gemm
impl Copy for CutlassNvfp4Gemm
impl Eq for CutlassNvfp4Gemm
impl StructuralPartialEq for CutlassNvfp4Gemm
Auto Trait Implementations§
impl Freeze for CutlassNvfp4Gemm
impl RefUnwindSafe for CutlassNvfp4Gemm
impl Send for CutlassNvfp4Gemm
impl Sync for CutlassNvfp4Gemm
impl Unpin for CutlassNvfp4Gemm
impl UnsafeUnpin for CutlassNvfp4Gemm
impl UnwindSafe for CutlassNvfp4Gemm
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.§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
§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
key and return true if they are equal.