GPUKernelContest/docs/Tilelang/TileLang.md

104 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TileLang 国产GPU开发项目文档项目背景+快速上手+生态贡献)
## 一、项目背景
### 1. 行业痛点国产GPU生态的核心挑战
当前智算与通用计算领域中GPU内核开发面临双重困境一方面国际主流GPU开发语言学习成本高、代码量大开发者需兼顾性能优化与生产力门槛较高另一方面国产GPU虽在硬件性能上逐步追赶但软件生态适配相对来说还有很大的进步空间缺乏轻量化、高效的开发工具链导致硬件算力难以充分释放生态协同性不足。
### 2. 解决方案TileLang的技术突破
TileLang作为TileLang社区主导的GPU内核领域专用语言以“高效开发+性能不妥协”为核心,针对性解决行业痛点:
- **开发效率革命**采用Python式简洁语法实现FlashAttention算子仅需80行代码并保持了与官方版本持平的性能。这种代码量的大幅减少不仅降低了开发门槛也提高了维护性和可读性。
- **分层接口适配**提供3个层次编程接口覆盖从初学者到专家的全阶段需求降低国产GPU开发门槛。
- **多硬件兼容**已在MACA曦云C500、英伟达H100/A100、AMD MI250/MI300X等多类GPU上验证适配支持“cuda/hip/cpu”多目标编译兼容性广泛。
### 3. 生态协同MACA与开源社区的落地支持
为推动TileLang在国产GPU上的实际应用MACA国产高性能GPU代表厂商与开源社区联合行动
- **硬件适配**MACA AI编译器团队和TileLang社区合作已提前参与该项目探讨MACA GPU与TileLang的适配开源仓库[mcTileLang](https://gitee.com/metax-maca/mcTileLang)通过MXMACA软件栈实现深度协同核心算子性能接近国际主流产品。
- **在线环境搭建**在模力方舟平台提供预配置的TileLang在线体验环境开发者无需自行搭建硬件直接基于曦云C50064GB显存、Intel Xeon Gold 6530来进行开发
- **资源支持**:提供专属算力券降低体验成本,同时开源完整适配代码与文档,助力生态共建。
### 4. 项目意义
本项目通过“语言工具+国产硬件+在线平台”的组合打破国产GPU生态“硬件强、软件弱”的僵局为开发者提供“开箱即用”的国产GPU开发方案推动中国算力产业从“单点突破”转向“生态共荣”助力智算、通用计算领域的国产化替代与创新发展。
## 二、快速上手TileLang 国产 GPU 开发实践
### 1. 环境准备获取TileLang在线开发资源
#### 步骤1进入模力方舟算力市场
访问[模力方舟](https://ai.gitee.com/compute)点击顶部导航栏“算力市场”进入MACA GPU资源租用页面。
#### 步骤2领取TileLang专属算力券
- 参与比赛活动领取TileLang专属算力券
- 算力券可直接兑换曦云C系列GPU容器资源用于TileLang开发体验。
#### 步骤3选择TileLang镜像与配置
- **硬件配置选择**默认选择“曦云C500”GPU单卡配置为64GB显存、12核Intel Xeon Gold 6530 CPU
- **镜像选择**在“镜像”列表中勾选“基础镜像”下的“TileLang 0.1.5”
- **计费方式**:支持按量收费、包日/包周/包月。
### 2. 容器启动与TileLang验证
#### 步骤1启动GPU容器
完成配置与算力券兑换后点击“启动容器”等待容器初始化通常耗时1-3分钟可在“工作台”查看进度
#### 步骤2执行快速验证命令
容器启动后通过终端输入以下命令验证TileLang环境可用性
```bash
# 进入TileLang示例目录
cd /root/mcTileLang/
# 运行快速启动示例
python3 ./examples/quickstart.py
```
#### 步骤3确认验证结果
若终端输出以下信息,说明环境正常:
- 张量输出(如`tensor([[ -1.4619, -19.9844, ... ]], device='cuda:0', dtype=torch.float16)`
- 匹配提示(`Kernel output matches PyTorch reference`
- 延迟数据(如`Latency:0.11110399663448334 ms`)。
可额外执行`mx-smi`命令查看曦云C500 GPU状态如温度、显存占用、功率等确认硬件资源正常调用。
### 3. 进阶体验TileLang算子开发
#### 步骤1参考官方文档
访问MACA开源项目文档获取算子开发教程与API说明。
#### 步骤2尝试核心算子开发
基于示例代码修改开发自定义GPU算子如简化版GEMM算子
#### 步骤3参与生态贡献
若开发的算子具备通用性,可通过[gitee](https://gitee.com/metax-maca/mcTileLang)提交PR参与TileLang国产GPU生态共建。
## 三、生态贡献指南邀您共建TileLang国产GPU生态
为持续完善mcTileLang仓库功能、降低开发门槛诚邀所有开发者参与贡献重点欢迎**Issue反馈**与**Docs/Example类型PR**,评分详见[Task](Task.md)具体指南如下:
### 1. 积极反馈提交Issue助力仓库优化
当您遇到以下场景时欢迎通过仓库“Issues”模块提交反馈帮助团队定位问题、明确方向
- **功能需求**:需要新增算子示例(如卷积、稀疏注意力)、补充特定硬件适配文档;
- **Bug反馈**:运行示例代码报错、性能不符合预期、编译过程异常(需附报错日志与环境信息);
- **文档疑问**现有文档如安装步骤、API说明不清晰、存在疏漏
- **优化建议**:对内核性能、接口易用性、编译速度的改进想法。
> 提交Issue时请选择对应标签如“feat request”“bug”“doc”描述清晰场景与需求便于社区快速响应。
### 2. 主动共建提交Docs/Example类型PR
mcTileLang仓库的`docs`(文档)与`examples`示例目录是生态核心组成部分尤其欢迎以下类型PR共建更易用的开发资源
#### 1Docs类型PR完善文档体系
- **教程迁移**将已有的基于CUDA的教程文档迁移到MACA上
- **新增教程**补充“TileLang布局优化实战”“MACA GPU性能调优指南”等进阶教程
- **更新说明**同步API变更如新增的接口、修正安装步骤中的过时信息
- **补充案例**:在文档中添加“常见问题排查”(如容器启动失败、编译报错解决)。
#### 2Example类型PR丰富算子示例
- **新增算子**提交RetNet、Mamba等新兴模型的TileLang实现或补充现有算子的优化版本如支持不同精度或者混合精度的算子
- **硬件适配**提供算子在GPU如曦云C500上的适配示例与性能分析
#### 3PR提交流程
1. Fork mcTileLang仓库到个人账号
2. 创建专属分支(如`doc/update-install-guide`、`example/add-fp8-gemm`
3. 完成修改后提交PR并关联相关Issue如没有可以自己提交Issue并进行关联
4. 参考仓库`CONTRIBUTING.md`确保代码风格、文档格式符合规范,等待审核合并。
## 四、资源汇总
- 仓库地址https://gitee.com/metax-maca/mcTileLang
- 在线体验https://ai.gitee.com/compute
- 文档参考《曦云系列_通用计算GPU_快速上手指南》
- 社区交流加入社区参与讨论仓库README有入口