SuperAPI AI 工具集

tilelang-developer

编程与开发

查看项目

更新于 10-16 04:36

技能介绍

用途

TileLang Developer 技能用于使用 TileLang 编写、优化和调试高性能 AI 计算内核。TileLang 是一种基于 tile 的编程模型,旨在弥合 CUDA 底层控制与高层抽象之间的差距。该技能适用于以下场景:

  • 为 AI 操作(矩阵乘法、注意力机制等)实现自定义 GPU 内核
  • 针对现代 GPU(NVIDIA Ampere/Hopper、AMD MI300X、华为昇腾 NPU)优化性能关键算子
  • 调试 TileLang 代码或解决性能问题
  • 在不同硬件平台之间移植内核
  • 理解或修改现有 TileLang 实现

主要能力

该技能提供完整的 TileLang 内核开发工作流程,涵盖以下能力:

  1. 需求分析:收集张量形状(M、N、K 维度)、数据类型(float16、float32、bfloat16、int8)、内存布局(行主序、列主序)、硬件目标(NVIDIA GPU、AMD GPU、华为昇腾 NPU)以及性能目标(目标吞吐量或延迟、内存带宽约束、对比基线如 cuBLAS)。

  2. 内核结构搭建:使用 @tilelang.jit(target="cuda", out_idx=[2]) 和 @T.prim_func 创建内核脚手架,支持 cuda、hip、cpu 目标,可指定输出参数索引和块维度。

  3. 网格与内存层次定义:使用 T.Kernel 定义网格维度,通过 T.alloc_shared 分配共享内存,通过 T.alloc_fragment 分配寄存器片段,并使用 T.annotate_layout 和 T.make_swizzled_layout 应用 swizzle 布局以避免 bank 冲突。内存层次包括全局内存(HBM)、共享内存(L1 缓存)和寄存器。

  4. 计算逻辑实现:使用 TileLang 原语进行数据移动和计算,包括 T.copy(智能数据传输,自动选择 cp.async、TMA 等)、T.gemm(使用 Tensor Core 的矩阵乘法)、T.Pipelined(软件流水线,重叠计算和内存传输)、T.Parallel(逐元素并行操作)。流水线阶段推荐 num_stages=3(三缓冲)。

  5. 验证与测试:生成测试代码,与参考实现(如 PyTorch 的矩阵乘法)进行对比,使用 torch.testing.assert_close 验证正确性。

  6. 性能优化:块大小调优(A100 推荐 128×128×32 或 64×64×32,H100 可使用 256×128×32,MI300X 可能需要更小的块)、流水线深度调整、warp 策略(FullRow 用于注意力,FullCol 用于 MLA 解码)、块级 swizzle(T.use_swizzle(panel_size=10) 提高 L2 缓存命中率)。

  7. 常见内核模式:矩阵乘法(GEMM)、FlashAttention(在线 softmax 的内存高效注意力)、DeepSeek MLA(带 KV 压缩的多头潜在注意力)。

  8. 硬件特定注意事项:NVIDIA GPU(Ampere 使用 cp.async,Hopper 可使用 TMA)、AMD GPU(MI300X 使用 target="hip",64KB 共享内存限制)、华为昇腾(实验性后端)。

  9. 代码质量标准:为非显而易见的优化添加解释性注释、注明硬件假设、包含使用示例、记录块大小选择依据、提供性能预期。

  10. 故障排查:编译错误(共享内存超限、形状不匹配)、运行时错误(结果全零、NaN/Inf)、性能问题(低吞吐量、低占用率、bank 冲突)的快速参考。

使用方式

该技能以内核开发工作流的方式使用,用户提出内核请求后,按照分析需求、搭建结构、定义网格与内存、实现计算、验证测试、优化性能的步骤进行。技能内部引用 API_REFERENCE.md(API 细节)、EXAMPLES.md(完整代码示例)、DEBUGGING.md(故障排查)等参考文档。

适用场景

  • 需要为 AI 算子实现自定义 GPU 内核的开发者
  • 需要优化性能关键算子以匹配或超越厂商库(如 cuBLAS)的场景
  • 需要跨硬件平台(NVIDIA、AMD、昇腾)移植内核的场景
  • 需要调试 TileLang 代码或性能问题的场景

限制

资料未提供该技能的收费、价格、平台兼容性细节。部分信息(如昇腾后端的成熟度)标注为实验性。具体 API 细节、完整代码示例和故障排查方案需查阅对应的参考文档。