Token导航 LogoToken导航TokenDH.com
前端设计需要联网github未标认证来源可访问许可证需确认审计通过

cute-dsl-ref可爱的 DSL 参考

Agent Skill

cute-dsl-ref 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

533

周安装

22

GitHub Stars

公开资料未说明

下载量

174
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:cute-dsl-ref(可爱的 DSL 参考)
来源仓库:https://github.com/pepperu96/hyper-mla
仓库路径:skills/cute-dsl-ref
安装命令:
npx skills add https://github.com/pepperu96/hyper-mla --skill cute-dsl-ref
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/pepperu96/hyper-mla --skill cute-dsl-ref

简介

NVIDIA CuTe Python DSL 布局代数的官方参考手册,涵盖线程级控制原语。

  • 暴露显式的 thread/warp/warpgroup 控制、TMA 传输流水线和共享内存管理接口。
  • 采用 host/device 双函数模式:CPU 端设置描述符,GPU 端执行实际计算内核。
  • 适用于需要精细控制内存布局和通信模式的深度学习算子开发场景。
  • cute-dsl-ref 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

CuTe Python DSL Reference

Execution Model

CuTe Python DSL is the Python surface for NVIDIA's CuTe layout algebra. Unlike cuTile's block-level abstraction, CuTe DSL exposes explicit thread/warp/warpgroup control, TMA pipelines, barrier choreography, and shared memory management.

Two-Level Host/Device Pattern

Every CuTe DSL kernel has two functions:

  1. @cute.jit host function — runs on CPU, sets up TMA descriptors, computes grid, allocates shared memory, launches the kernel
  2. @cute.kernel device function — runs on GPU, contains the actual computation
import cutlass
import cutlass.cute as cute

@cute.kernel
def my_kernel(tiled_mma: cute.TiledMma, ...):
    tidx, _, _ = cute.arch.thread_idx()
    bidx, bidy, _ = cute.arch.block_idx()
    # ... GPU code

@cute.jit
def host_fn(a: cute.Tensor, b: cute.Tensor, c: cute.Tensor):
    # Setup TMA descriptors, compute grid, allocate SMEM
    my_kernel(...).launch(grid=grid_shape, block=block_shape, smem=smem_bytes)

Compilation Pipeline

Three-stage JIT compilation:

  1. Pre-Staging: Python AST rewriting
  2. Meta-Stage: Python interpreter executes meta-programs (compile-time constants resolved)
  3. Object-Stage: Compiler backend generates PTX → SASS

JIT artifacts are cached automatically. Control with CUTE_DSL_CACHE_DIR and CUTE_DSL_DISABLE_FILE_CACHING.

Key Difference from cuTile

AspectcuTileCuTe DSL
Abstraction levelBlock-level (no thread identity)Thread/warp/warpgroup level
TMAImplicit (allow_tma=True)Explicit descriptor setup in host
Shared memoryCompiler-managedExplicit allocation and layout
SynchronizationNone exposedBarriers, arrive/wait, named barriers
PipelineNone exposedExplicit multi-stage async pipelines
MMAct.mma(A, B, C) on tilescute.gemm(tiled_mma, d, a, b, c) on partitioned fragments
CompilationcuTile bytecode → MLIRCuTe DSL JIT → PTX → SASS

Core API Table

Decorators and Compilation

APIPurposeKey params
@cute.kernelDevice kernel decoratorfunction name must match module filename
@cute.jitHost JIT function decorator
kernel(...).launch(grid, block, smem, cluster)Launch kernelgrid=(x,y,z), block=(threads,1,1), smem=bytes, cluster=(cx,cy,cz)
cute.compile(fn, *args, options="...")Ahead-of-time compile"opt-level=3", "keep-ptx", etc.

Thread/Block/Grid Indexing

APIPurpose
cute.arch.thread_idx()Returns (tidx, tidy, tidz)
cute.arch.block_idx()Returns (bidx, bidy, bidz)
cute.arch.block_dim()Block dimensions
cute.arch.grid_dim()Grid dimensions
cute.arch.warp_idx()Warp index within block
cute.arch.block_idx_in_cluster()Block index within cluster (Hopper+)

Layout and Tensor Construction

APIPurposeNotes
cute.make_layout(shape, stride)Create layoutCore abstraction: maps coordinates → indices
cute.make_ordered_layout(shape, order)Create with stride ordere.g., order=(1,0) for column-major
cute.make_identity_layout(shape)Identity layoutFor predication
cute.make_tensor(ptr, layout)Create tensor viewPairs pointer + layout
cute.make_fragment(layout, dtype)Allocate register tensorFor accumulators
cute.make_fragment_like(src, dtype)Register tensor matching source
cute.make_ptr(dtype, addr, memspace)Tagged pointercute.AddressSpace.smem/gmem
cute.from_dlpack(tensor)Convert PyTorch/JAX tensorReturns cute.Tensor with .mark_layout_dynamic()

Layout Algebra

APIPurpose
cute.size(t, mode=None)Total size or modal size
cute.shape(t)Get shape tuple
cute.stride(t)Get stride tuple
cute.rank(t)Number of modes
cute.local_tile(tensor, tiler, coord, proj)Extract block's tile
cute.logical_divide(tensor, divisor)Divide into tile + rest
cute.composition(layout1, layout2)Compose layouts
cute.complement(layout)Complement layout
cute.coalesce(layout)Simplify layout
cute.flatten(t)Flatten tensor/layout
cute.group_modes(layout, start, end)Group modes together
cute.tile_to_shape(tile, shape)Tile to target shape
cute.ceil_div(a, b)Ceiling division

MMA Operations

APIPurposeNotes
cute.make_tiled_mma(op)Create tiled MMA from operatione.g., tcgen05.MmaF16BF16Op(...)
tiled_mma.get_slice(thread_idx)Get thread's partitionReturns ThrMma
thr_mma.partition_A(tensor)Partition A operandThread-level view
thr_mma.partition_B(tensor)Partition B operandThread-level view
thr_mma.partition_C(tensor)Partition C operandThread-level view
tiled_mma.partition_shape_C(shape)Shape of C partitionFor fragment allocation
tiled_mma.make_fragment_A(tensor)Make A fragmentRegister allocation
tiled_mma.make_fragment_B(tensor)Make B fragmentRegister allocation
tiled_mma.make_fragment_C(shape)Make C fragmentRegister allocation
cute.gemm(tiled_mma, d, a, b, c)Execute MMA: d = a @ b + cDispatches to hardware MMA

Copy and TMA Operations

APIPurposeNotes
cute.make_tiled_copy(atom)Create tiled copyFor bulk data movement
cute.copy(atom, src, dst, **kw)Execute copytma_bar_ptr=, mcast_mask=
cute.basic_copy(src, dst)Element-wise copyNo atom needed
cute.prefetch(atom, src)Prefetch TMA descriptor
cute.nvgpu.make_tiled_tma_atom_A(op, tensor, smem_layout, tile, mma)Create TMA atom for AHost-side only
cute.nvgpu.make_tiled_tma_atom_B(op, tensor, smem_layout, tile, mma)Create TMA atom for BHost-side only

Shared Memory

APIPurpose
cutlass.utils.SmemAllocator()Create SMEM allocator
smem.allocate_tensor(dtype, layout, align, swizzle)Allocate tensor in SMEM
smem.allocate(struct_type)Allocate struct in SMEM

Tensor Memory (SM100 only)

APIPurpose
cutlass.utils.TmemAllocator(...)Create TMEM allocator
tmem.allocate(num_cols)Allocate columns
tmem.wait_for_alloc()Wait for allocation
tmem.retrieve_ptr(dtype)Get pointer
tmem.free(ptr)Free memory

Synchronization

APIPurpose
cute.arch.mbar.init(barrier_ptr, count)Initialize barrier
cute.arch.mbar.arrive(barrier_ptr)Arrive at barrier
cute.arch.mbar.wait(barrier_ptr, phase)Wait at barrier
cute.arch.mbar.arrive_and_expect_tx(barrier_ptr, bytes)Arrive with expected TX bytes
cute.arch.mbar.try_wait(barrier_ptr, phase)Non-blocking wait
Pipeline classes (see references)Multi-stage async pipelines

Math (Element-wise on TensorSSA)

APIPurposeAPIPurpose
cute.exp(x)e^xcute.exp2(x)2^x
cute.log(x)ln(x)cute.log2(x)log2(x)
cute.sqrt(x)sqrtcute.rsqrt(x)1/sqrt(x)
cute.sin(x)sincute.cos(x)cos
cute.tanh(x)tanhcute.erf(x)erf

All math functions accept fastmath=True for approximate hardware intrinsics.

Tensor Operations

APIPurpose
cute.full(shape, val, dtype)Fill with value
cute.zeros_like(tensor)Zero tensor matching shape
cute.where(cond, x, y)Conditional select
cute.any_(tensor)Logical any
cute.all_(tensor)Logical all

Debugging

APIPurpose
cute.printf(fmt,...)Device-side printf
cute.print_tensor(tensor)Print tensor contents
print(...)Compile-time print (meta-stage only)

Key Constraints

  1. @cute.kernel function name must match module filename — same rule as cuTile
  2. TMA descriptors are host-side only — create in @cute.jit, pass to @cute.kernel
  3. Register budget: 255 max/thread — validate with docs/devices/ specs
  4. SMEM limits vary by device and SM version — SM100 (B200/B300): 228 KB/SM, 227 KB/block opt-in; SM120 (RTX 5090): 96 KB
  5. Pipeline stages consume SMEM — each stage needs its own buffer; validate total
  6. Barrier sync errors are silent — cause incorrect results, not crashes; always test with --check
  7. Cluster dimensions must be compatible with grid — cluster shape must evenly divide grid
  8. print() is compile-time only — use cute.printf() for device-side output
  9. No early-exit breaks in loops — use predication instead
  10. 32-bit layout algebra — shapes/strides limited to 32-bit integers
  11. Architecture support: Ampere (SM80) and above; SM100 (B200/B300) for full features including tcgen05 and TMEM
  12. Architecture-specific kernels: Some kernels target a specific SM version (e.g., tcgen05 MMA ops require SM100, not just "Blackwell"). The "Blackwell" marketing name spans multiple SM versions with different instruction sets: Always check the device before running, compiling, or profiling: nvidia-smi --query-gpu=name --format=csv,noheader. Then match against the kernel's target SM version — the GPU name alone is not sufficient; you must know which SM version it maps to. If the SM version does not match, skip the run/profiling step rather than attempting execution that will fail or produce misleading results.

- SM100 (B200, B300) — datacenter GPUs, supports tcgen05 MMA, TMEM, full cluster features - SM120 (GeForce RTX 5090, RTX 5080) — consumer Blackwell, uses sm_120a, does not support tcgen05 ops

Control Flow

ConstructBehaviorNotes
for i in range(N)Unrolled if N is staticStandard Python range
for i in cutlass.range(N)Runtime loopGenerates MLIR loop
for i in cutlass.range_constexpr(N)Compile-time unrollN must be static
if cutlass.const_expr(cond)Compile-time branchEliminated at compile time
if condRuntime branchBoth branches must type-check

Blackwell Datacenter MMA Operations (tcgen05) — SM100 only

SM100 required. tcgen05 ops are available on B200/B300 (SM100) only. They are not available on consumer Blackwell GPUs like RTX 5090 (SM120/sm_120a).
from cutlass.cute.nvgpu import tcgen05

# Create MMA operation for SM100 (B200/B300) tensor cores
op = tcgen05.MmaF16BF16Op(
    dtype=cutlass.Float16,           # Input type
    acc_dtype=cutlass.Float32,       # Accumulator type
    shape=(128, 128, 64),            # M x N x K tile shape
    cta_group=tcgen05.CtaGroup.ONE,  # ONE or TWO CTAs
)

tiled_mma = cute.make_tiled_mma(op)
OperationInput typesShapes
MmaF16BF16OpFP16/BF16 → FP32Various M×N×K
MmaF8F6F4OpFP8/FP6/FP4 → FP32Narrow precision
Block-scaled variantsWith scale factorsSee examples

Common Patterns

GEMM with TMA Pipeline (Simplified)

@cute.kernel
def gemm_kernel(tiled_mma, tma_a, tma_b, smem_a, smem_b, gmem_c, ...):
    tidx, _, _ = cute.arch.thread_idx()
    bidx, bidy, _ = cute.arch.block_idx()

    # Get thread's MMA partition
    thr_mma = tiled_mma.get_slice(tidx)

    # Allocate accumulator in registers
    acc = tiled_mma.partition_shape_C(tile_shape)
    tCrC = cute.make_fragment(acc, cutlass.Float32)

    # K-loop with TMA pipeline
    for k_tile in range(num_k_tiles):
        # TMA copy: global → shared (async)
        cute.copy(tma_a, gA_tile, sA_tile, tma_bar_ptr=barrier)
        cute.copy(tma_b, gB_tile, sB_tile, tma_bar_ptr=barrier)

        # Wait for TMA to complete
        cute.arch.mbar.wait(barrier, phase)

        # Partition shared memory for this thread
        tCsA = thr_mma.partition_A(sA)
        tCsB = thr_mma.partition_B(sB)

        # MMA: accumulate into registers
        cute.gemm(tiled_mma, tCrC, tCsA, tCsB, tCrC)

    # Epilogue: write back to global memory
    cute.basic_copy(tCrC, gC_partition)

Warpgroup Specialization (Producer/Consumer)

warp_idx = cute.arch.warp_idx()
is_producer = warp_idx < num_producer_warps

if is_producer:
    # Issue TMA copies for upcoming pipeline stages
    for stage in range(num_stages):
        cute.copy(tma_atom, src, dst, tma_bar_ptr=barriers[stage])
        cute.arch.mbar.arrive_and_expect_tx(barriers[stage], bytes_per_stage)
else:
    # Consume data from shared memory, execute MMA
    for stage in range(num_stages):
        cute.arch.mbar.wait(barriers[stage], phase)
        cute.gemm(tiled_mma, acc, sA_stage, sB_stage, acc)

Persistent Kernel Loop

@cute.kernel
def persistent_kernel(tiled_mma, num_tiles, ...):
    bidx, _, _ = cute.arch.block_idx()
    num_blocks = cute.arch.grid_dim()[0]

    tile_id = bidx
    while tile_id < num_tiles:
        # Process tile
        # ... TMA copy, MMA, epilogue ...
        tile_id += num_blocks

Detailed References

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.07%
按下载量换算63

Claude

27.62%
按下载量换算48

Cursor

18.5%
按下载量换算32

Gemini CLI

8.39%
按下载量换算15

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills