You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Initial Rubin support to accelerate dense GEMMs. The following features are available:
CuTe DSL and CuTe extensions
Support for higher-throughput FP8 (MMA_K=64) and FP4 (MMA_K=128) Tensor Core MMA instructions
B collector reuse
Extended TMEM size from 512 COL to 576 COL
Larger shared memory allocations (328KB)
Enhanced mixed precision throughput (FP8/FP4)
Softmax acceleration related features
Primitives
Support for higher-throughput FP8 (MMA_K=64) and FP4 (MMA_K=128) Tensor Core MMA instructions
B collector reuse
Extended TMEM size from 512 COL to 576 COL
Larger shared memory allocations (328KB)
Enhanced mixed precision throughput (FP8/FP4)
Softmax acceleration related feature
2:4 sparsity support for FP4
CuTe DSL extensions has several new features:
CTA-V maps are now inferred automatically for cute_ext TMA load, store, multicast, and reduce-store operations. Explicit CTA-V maps remain supported as overrides.
Added asynchronous atomic TMA reduce-store and sparse MMA operations.
Added reusable cute_ext GEMM mainloop and TMA epilogue helpers.
Added opt-in TMEM accumulator-buffer planning, including overlapping ping-pong storage for capacity-constrained kernels.
Improved device-side TMA descriptor updates and grouped GEMM performance through SMEM-staged updates, workspace reuse, and reduced prologue and synchronization overhead.
This release includes an opt-in preview of the CuTe DSL extensions (cute_ext) compiler pipeline for ordinary Cute DSL kernels. This pipeline lets user mix cute_ext APIs directly into @cute.jit and @cute.kernel code and is required for kernels that mix the two API surfaces. You may test this feature with the following: CUTE_DSL_USE_EXTENSION_COMPILER=1 python your_program.py
The pipeline is expected to preserve program behavior and performance, but generated PTX/SASS may differ. Note that this pipeline will become the default in the future, no earlier than 4.10.
Added examples for better control over Primitives' compiler warnings/errors introduced in 4.7.0. See the CuTeDSL/experimental/compiler_diagnostic/ directory.
IKET Profiler Tool
Rubin kernels (sm107) can now be profiled.
It is now possible to only dump timing data for a specific cluster to reduce profiling overhead. Previously all clusters were profiled.
Task Scheduling can instrument the schedule with IKET ranges when constructing TaskManager objects (iket_enable_profiling=True). Task execution will generate an IKET range and individual pipeline stages in a schedule may generate separate ranges (iket_profiling_stages).
A number of new examples were added in this release:
Rubin (CuTe):
Dense GEMM for legacy data type with B collector reuse as applicable
Grouped GEMM with B collector reuse
Dense blockscaled GEMM with FP4/FP6/FP8 mixed precision and UE5M3 / block-32 scale-factor support
Grouped blockscaled GEMM with B collector reuse as applicable
Blockwise GEMM
Rubin (CuTe extension):
Support for higher-throughput FP8 (MMA_K=64) and FP4 (MMA_K=128) blockscaled GEMM with UE5M3 scale-factor
Grouped GEMM with B collector reuse
Blackwell (CuTe extension):
Dense GEMMs
Back-to-back GEMM
Blockscaled GEMM
Persistent GEMM with alpha/beta scaling
CLC scheduler/dynamic persistent GEMM
GLU GEMM
Mixed input GEMM
Planar complex GEMM
Input transform GEMM
GeForce pingpong dense GEMM
Blackwell Ultra blockscaled GEMM
Dense Convolutions
Implicit-Gemm Fprop Conv
Blocksclaed Implicit-Gemm Fprop Conv
GeForce Implicit-Gemm Fprop Conv
GeForce Blockscaled Implicit-Gemm Fporp Conv
Attention
GQA Decode
Grouped GEMM
Unscaled and blockscaled grouped GEMM
Top-K
Ampere (CuTe extension):
SIMT GEMM
CuTe DSL now supports x86_64 Windows
CuTe DSL AoT now supports new host target: QNX8.0
Notebooks are restructured under examples/python/CuTeDSL/cute/notebooks and new notebooks for primitives will be added under examples/python/CuTeDSL/notebooks
Numpy is now not a default dependency
Bug fixes and improvements:
nvidia-cuda-nvdisasm is now an optional dependency of nvidia-cutlass-dsl via the optional [sass] extra. SASS dumping (CUTE_DSL_KEEP=sass / KeepSASS) now resolves nvdisasm from the bundled wheel (recommended since its version matches the DSL toolchain) or from a local CUDA Toolkit (CUDA_HOME/CUDA_PATH). A locally-provided nvdisasm must come from a CUDA Toolkit at least as new as the toolchain that produced the CUBIN. Installations that never dump SASS are unaffected.
Reduced the protobuf version requirement of IKET profiler from 6.30 to 4.21. This should make protobuf an easier requirement to satisfy in preparation for transioning IKET to an optional extra.
Improved JAX PyTree input/output aliasing for cutlass.jax.cutlass_call
Fixed a regression from 4.6.0 where cute.autovec_copy emitted per-element instead of
vectorized instructions for tensors with a dynamic stride (!3463)
Fixed TVM-FFI env stream detection for GPU tensors in tuple
(!3444)
Fixed GPU link-libraries compile-option order so it is stable across processes
(!3564)
Fixed preprocessor IndexError on staged bool() with no arguments
(!3506)
Rejected cute.compile on @cute.kernel with a user error instead of an ICE
(!3429)
Fixed CuTe DSL crashing the Python interpreter when used in a REPL
(!3413)
Dense and blockscaled GEMMs in Operator API have preliminary Rubin support. These are provided as a preview and may need additional performance tuning.
Updated GEMMs include:
Dense GEMMs: FP8xFP8
Blockscaled GEMM: {MXFP8}x{MXFP4, MXFP8} and {MXFP4, NVFP4}x{MXFP4, NVFP4} (including support for the new UE5M3 scale factor dtype for NVFP4).
These kernels utilize the below new features in Rubin:
Higher SMEM (328KB) and TMEM capacity (288KB)
B-buffer reuse
Enhanced mixed precision throughput
Operators can now be ranked by their estimated performance when nvMatmulHeuristics is available. See tutorial here. NOTE: This currently only supports Blackwell kernels as nvMatmulHeuristics does not yet support Rubin.
Standalone kernel implementations are now exposed through cutlass.kernels. These kernels can be used directly, in addition to being discoverable and usable via the Operator interface in cutlass.operators.
Custom Epilogue fusions now support per-row or per-column reductions.
IndexPtrGroupedGemmArguments is now used to represent Grouped GEMM with contiguous-offset/index-pointers. Existing GroupedGemmArguments is deprecated and will be removed in a future release.
C++
Added initial Rubin support (SM107) with CuTe C++ building blocks:
Various improvements and fixes from the community and CUTLASS team. Thanks to everyone who submitted PRs!
Optimal code generation with CUDA toolkit versions 13.4.
NOTE: Executing Rubin kernels (SM107) requires the R615 driver which will be released
with CUDA Toolkit 13.4 GA. R610 from CUDA Toolkit 13.4 Developer Preview is not
sufficient.
This discussion was created from the release CUTLASS 4.8.0.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
CuTe DSL
New features
Initial Rubin support to accelerate dense GEMMs. The following features are available:
CuTe DSL extensions has several new features:
cute_extTMA load, store, multicast, and reduce-store operations. Explicit CTA-V maps remain supported as overrides.cute_extGEMM mainloop and TMA epilogue helpers.This release includes an opt-in preview of the CuTe DSL extensions (
cute_ext) compiler pipeline for ordinary Cute DSL kernels. This pipeline lets user mixcute_extAPIs directly into@cute.jitand@cute.kernelcode and is required for kernels that mix the two API surfaces. You may test this feature with the following:CUTE_DSL_USE_EXTENSION_COMPILER=1 python your_program.pyThe pipeline is expected to preserve program behavior and performance, but generated PTX/SASS may differ. Note that this pipeline will become the default in the future, no earlier than 4.10.
Added examples for better control over Primitives' compiler warnings/errors introduced in 4.7.0. See the
CuTeDSL/experimental/compiler_diagnostic/directory.IKET Profiler Tool
iket_enable_profiling=True). Task execution will generate an IKET range and individual pipeline stages in a schedule may generate separate ranges (iket_profiling_stages).A number of new examples were added in this release:
CuTe DSL now supports x86_64 Windows
CuTe DSL AoT now supports new host target: QNX8.0
Notebooks are restructured under examples/python/CuTeDSL/cute/notebooks and new notebooks for primitives will be added under examples/python/CuTeDSL/notebooks
Numpy is now not a default dependency
Bug fixes and improvements:
nvidia-cuda-nvdisasmis now an optional dependency ofnvidia-cutlass-dslvia the optional[sass]extra. SASS dumping (CUTE_DSL_KEEP=sass/ KeepSASS) now resolvesnvdisasmfrom the bundled wheel (recommended since its version matches the DSL toolchain) or from a local CUDA Toolkit (CUDA_HOME/CUDA_PATH). A locally-providednvdisasmmust come from a CUDA Toolkit at least as new as the toolchain that produced the CUBIN. Installations that never dump SASS are unaffected.cutlass.jax.cutlass_callcute.autovec_copyemitted per-element instead ofvectorized instructions for tensors with a dynamic stride (!3463)
(!3444)
link-librariescompile-option order so it is stable across processes(!3564)
IndexErroron stagedbool()with no arguments(!3506)
cute.compileon@cute.kernelwith a user error instead of an ICE(!3429)
(!3413)
This release has been tested against the following packages:
CUTLASS Operator API
Dense and blockscaled GEMMs in Operator API have preliminary Rubin support. These are provided as a preview and may need additional performance tuning.
Updated GEMMs include:
These kernels utilize the below new features in Rubin:
Operators can now be ranked by their estimated performance when nvMatmulHeuristics is available. See tutorial here. NOTE: This currently only supports Blackwell kernels as nvMatmulHeuristics does not yet support Rubin.
Standalone kernel implementations are now exposed through
cutlass.kernels. These kernels can be used directly, in addition to being discoverable and usable via the Operator interface incutlass.operators.Custom Epilogue fusions now support per-row or per-column reductions.
IndexPtrGroupedGemmArgumentsis now used to represent Grouped GEMM with contiguous-offset/index-pointers. ExistingGroupedGemmArgumentsis deprecated and will be removed in a future release.C++
sm_107aandsm_107ftargets:NOTE: Executing Rubin kernels (SM107) requires the R615 driver which will be released
with CUDA Toolkit 13.4 GA. R610 from CUDA Toolkit 13.4 Developer Preview is not
sufficient.
This discussion was created from the release CUTLASS 4.8.0.
All reactions