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
Rubin new FP8 and FP4 Tensor Core support
B collector reuse
Extended TMEM size from 512 COL to 576 COL
Larger shared memory allocations (328KB)
Enhanced mixed precision throughput (FP8/FP4)
Primitives
Rubin new FP8 and FP4 Tensor Core support
Extended TMEM size from 512 COL to 576 COL
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.
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, but generated PTX/SASS may differ. The pipeline is planned to become the default in a future release.
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):
FP4 blockscaled GEMM
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
Attention
GQA Decode
Grouped GEMM
Unscaled and blockscaled grouped GEMM
Top-K
Ampere (CuTe extension):
SIMT GEMM
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)
This release has been tested against the following packages:
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, in addition to those exposed through the Operator interface in cutlass.operators. This allows kernels to be called directly without looking them up first.
Custom Epilogue fusions now support partial (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.
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
Initial Rubin support to accelerate dense GEMMs. The following features are available:
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.
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, but generated PTX/SASS may differ. The pipeline is planned to become the default in a future release.
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:
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)
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:
- 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, in addition to those exposed through the Operator interface incutlass.operators. This allows kernels to be called directly without looking them up first.Custom Epilogue fusions now support partial (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 dev.
All reactions