mcpField
C
cutlass-skill

cutlass-skill

github.com/slowlyc开发172110 次安装12 周前更新
代码仓库

关于 cutlass-skill

cutlass-skill 面向使用 CuTeDSL、CuTe 和 CUTLASS C++ 的开发者,引导其以本地 CUTLASS 源码为实现参考。它涵盖示例检索、追踪实例化实现,以及调优前的内核验证。

主要功能

  1. 01浏览 CuTeDSL 与 CUTLASS 源码
  2. 02按操作和架构查找示例
  3. 03追踪构建器与内核实现
  4. 04正确性和性能工作流指导

适用场景

  1. 01查找某项操作的 CuTeDSL 示例
  2. 02从 CUTLASS 构建器追踪到内核
  3. 03调优前检查布局与对齐

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/slowlyc/agent-gpu-skills --skill cutlass-skill

安装后在 Claude Code 中输入/cutlass-skill确认已加载。

附带文件quick-reference.md

详细介绍

CUTLASS 和 CuTe 开发

将本地 CUTLASS 检出目录作为主要实现参考。优先参考当前源码和示例,而不是依赖记忆中的 API,因为 CuTeDSL 的路径和接口经常变化。

定位检出目录

解析此 SKILL.md 所在目录,然后使用其子目录 repos/cutlass/。安装程序会将该路径链接到 agent-gpu-skills/third_party/cutlass/,或链接到通过 CUTLASS_REPO 提供的检出目录。

在以下命令中,将 CUTLASS_REPO 替换为解析出的绝对路径:

CUTLASS_REPO=/absolute/path/to/cutlass-skill/repos/cutlass

如果检出目录缺失,请在 agent-gpu-skills 仓库中运行以下命令,然后重新安装 Skill:

bash update-repos.sh cutlass
bash install.sh --skill cutlass-skill

选择源码范围

任务从这里开始
CuTeDSL API 和实现python/CuTeDSL/cutlass/
所有 CuTeDSL 示例和教程examples/python/CuTeDSL/
CUTLASS C++ 示例examples/
CUTLASS C++ 内核和构建器include/cutlass/
CuTe C++ 布局、复制和 MMAinclude/cute/
Python 布局和 swizzle 工具python/pycute/
Python 清单和生成器工具python/cutlass_library/

将操作或架构映射到已验证检出目录中的具体文件时,请阅读 quick-reference.md。

查询工作流

  1. 确定编程范围:CuTeDSL Python、CuTe C++ 或 CUTLASS C++。
  2. 找到与目标架构和操作最接近的示例。
  3. 从示例追踪到它实例化的实现和头文件。
  4. 一并检查数据类型、布局、对齐、架构目标、调度方案和 epilogue。
  5. 在将示例改编到目标仓库之前,先构建或运行最小的代表性示例。

加载大型源码文件之前,先查找文件:

find "$CUTLASS_REPO/examples/python/CuTeDSL" -type f | sort
find "$CUTLASS_REPO/examples" -mindepth 1 -maxdepth 1 -type d | sort

同时搜索 CuTeDSL 定义和用法:

rg -n 'TiledMMA|tiled_mma' \
  "$CUTLASS_REPO/python/CuTeDSL/cutlass/cute" \
  "$CUTLASS_REPO/examples/python/CuTeDSL"

rg -n 'Pipeline|pipeline' \
  "$CUTLASS_REPO/python/CuTeDSL/cutlass/pipeline" \
  "$CUTLASS_REPO/examples/python/CuTeDSL/cute"

追踪 CUTLASS C++ 构建器和内核:

rg -n 'CollectiveBuilder' \
  "$CUTLASS_REPO/examples/49_hopper_gemm_with_collective_builder"

rg -n 'CollectiveMainloop' \
  "$CUTLASS_REPO/include/cutlass/gemm/collective"

rg -n 'GemmUniversal' \
  "$CUTLASS_REPO/include/cutlass/gemm"

追踪 CuTe 布局和架构原语:

rg -n 'make_layout|composition|complement' \
  "$CUTLASS_REPO/include/cute/layout.hpp"

rg -n 'TiledCopy|make_tiled_copy' "$CUTLASS_REPO/include/cute"
rg -n 'SM90_TMA|SM100_TMA' "$CUTLASS_REPO/include/cute/arch"

对于 C++ 示例,请检查其 CMakeLists.txt,并仅构建选定目标。根据工作负载替换以下架构和目标:

cmake -S "$CUTLASS_REPO" -B /tmp/cutlass-build -DCUTLASS_NVCC_ARCHS=100a
cmake --build /tmp/cutlass-build \
  --target 71_blackwell_gemm_with_collective_builder

运行 CuTeDSL 示例之前,请检查当前的 python/CuTeDSL/pyproject.toml 和 requirements 文件,不要假设 CUDA 或 Python 版本兼容。

实现规范

诊断 CUTLASS 内核时,请将以下三个层次分开:

problem shape and tensor layout
  → selected collective and schedule
  → generated CUDA/PTX behavior on the target architecture

不要根据示例目录名推断所选调度方案。请追踪实例化的类型和构建器参数。如果正确性取决于架构或指令细节,请添加 cuda-skill,并根据 CUDA 或 PTX 参考资料进行验证。

正确性工作:

  • 保留原始问题形状、步长、布局、数据类型、缩放格式和 epilogue;
  • 与独立的参考实现进行比较;
  • 在性能调优之前测试边界形状和对齐情况;
  • 将模板编译成功视为必要但不充分的条件。

性能工作:

  • 建立稳定的基线和测量方法;
  • 每次只更改一种调度方案、分块大小、阶段数或 epilogue 选项;
  • 记录编译器资源用量和确切的架构目标;
  • 只有在确认测量的分发路径使用了预期内核后,才进行性能分析。

更新源码

在 agent-gpu-skills 仓库中运行:

bash update-repos.sh cutlass
python3 scripts/validate_repo.py --require-sources

该检出目录跟踪 CUTLASS main 分支,而 third_party/UPSTREAMS.toml 记录了此 Skill 最近接受的提交。更新该记录之前,请检查源码映射是否存在偏差。

评论

支持 Markdown