diff --git a/README.md b/README.md index bcf9e31..b793d61 100644 --- a/README.md +++ b/README.md @@ -42,12 +42,12 @@ ### 📥 选手赛题准备 1. 点击 **[创建赛题](https://gitlink.org.cn/ccf-ai-infra/GPUKernelContest/issues/new)** ,并记录赛题的ID -2. 算力平台启动一个MACA3.0.0.4+PyTorch2.4.0的容器算力,详细步骤参考: **[算力平台使用说明](https://ai.gitee.com/docs/compute/container)** +2. 算力平台启动一个MACA3.0.0.4+PyTorch2.4.0的容器算力,详细步骤参考: **[算力平台使用说明](https://ai.gitee.com/docs/compute/container)** 3. 用ssh或者vscode进入容器环境,Clone自己Fork的仓库 ```bash git clone https://gitlink.com/gitlinkuseid/GPUKernelContest.git ``` - > 备注:`gitlinkuseid替换您的url`。 + > 备注:`gitlinkuseid` 替换为您的URL。 4. 进入参赛项目,创建以赛题ID为名称的目录。例如:[赛题3](https://gitlink.org.cn/ccf-ai-infra/GPUKernelContest/issues/3) ```bash # 进入Clone的仓库 @@ -62,7 +62,7 @@ ├── S1(说明:第一季比赛名) │ ├── 3(说明:以自己创建赛题ID命名目录存放自己需要提交的内容) ``` -4. Fork仓库并初始化比赛环境(三个核心算法题优化赛题以外自定义的赛题需有入口run.sh脚本,供CI自动测试验证) +4. Fork仓库并初始化比赛环境(三个核心算法题优化赛题以外自定义的赛题需有入口run.sh脚本,供CI自动测试验证) 1. 拷贝赛题样例`cp_template`到赛题`3`目录 ```bash # cp -r cp_template/* S1/3 @@ -135,15 +135,15 @@ cd S1/3 ## 📈 评分机制 -每次合并的提交会按以下规则评分: +每次合并的提交会按以下规则评分,[mcTileLang](https://gitee.com/metax-maca/mcTileLang)详见[mcTileLang](docs/Tilelang/TileLang.md): ### 🎯 基础得分(Level): | 等级 | 内容描述 | 分值 | |------|----------|------| -| Level 1 | 优化一个 PyTorch / Paddle 算子 | 5 分 | -| Level 2 | 融合优化 2~9 个算子 | 10 分 | -| Level 3 | 含 MMA(多维矩阵乘)融合算子 | 50 分 | -| Level 4 | 用于大模型推理的复杂融合算子 | 50 分 | +| Level 1 | 优化一个 PyTorch或Paddle 算子 / 验证[mcTileLang](https://gitee.com/metax-maca/mcTileLang)的docs文件夹下的文档并提交验证结果的截图到对应的issue | 5 分 | +| Level 2 | 融合优化 2~9 个算子 / 迁移[mcTileLang](https://gitee.com/metax-maca/mcTileLang)的docs文件夹下的文档已有的与CUDA相关的文档到MACA,并给对应的文档提交PR | 10 分 | +| Level 3 | 为[mcTileLang](https://gitee.com/metax-maca/mcTileLang)的docs/deeplearning_operators文件夹下未编写文档的算子提交算子解读的PR/补充和修复已有文档 | 20 分 | +| Level 4 | 含 MMA(多维矩阵乘)融合算子 / 用于大模型推理的复杂融合算子 / 给开源仓库[mcTileLang](https://gitee.com/metax-maca/mcTileLang)提交example文件夹下的代码PR | 50 分 | | 合并至MACA开源项目仓库的每个PR | 参考:[mcTVM](https://github.com/metax-maca/mcTVM),[mcTileLang](https://gitee.com/metax-maca/mcTileLang) | 50 分 | > 注释事项,非AI Infra组下的项目PR需在赛题Issue中提供合并记录,并确保和参赛时使用邮箱一致的提交邮箱方为有效。 @@ -174,7 +174,7 @@ cd S1/3 ## 📚 参考MACA开源项目仓库 -你可以参考以下项目仓库,了解算子开发与提交格式,如果为[github](https://github.com/orgs/MetaX-MACA/repositories),[gitee](https://gitee.com/organizations/metax-maca/projects)仓库里面的项目提出一个好的Issue可以获得算力券的激励。 +你可以参考以下项目仓库,了解算子开发与提交格式。如果为[GitHub](https://github.com/orgs/MetaX-MACA/repositories)、[Gitee](https://gitee.com/organizations/metax-maca/projects)仓库里面的项目提出一个好的Issue可以获得算力券的激励。 如: - [mcTVM](https://github.com/MetaX-MACA/mcTVM) - [FlashMLA](https://github.com/MetaX-MACA/FlashMLA) diff --git a/docs/Tilelang/Task.md b/docs/Tilelang/Task.md new file mode 100644 index 0000000..3284601 --- /dev/null +++ b/docs/Tilelang/Task.md @@ -0,0 +1,73 @@ +# mcTileLang 算子任务文档(按 Level 分级) +## 一、前置说明 +1. 文档参考:所有任务需遵循 mcTileLang 现有文档格式(可参考 `docs/deeplearning_operators` 下的 `matmul.md`、`elementwise.md`)。 +2. 提交要求:所有交付物需提交至 mcTileLang 仓库(Gitee 地址:https://gitee.com/metax-maca/mcTileLang ),PR 需标注“Level X 任务提交”,Issue 需关联对应任务模块。 + + +## 二、Level 1:基础验证类(5分,验证文档上限划10分,每个文档只有首次验证得分) +### 核心目标 +熟悉 mc_tilelang 基础功能,验证现有文档的可复现性。 + +### 任务内容(二选一即可) +**注:每个文档仅限首次验证得分,重复验证同一文档不计分** +1. **算子文档验证** + - 选择 1 个已完成的算子文档(`matmul.md`/`elementwise.md`/`deepseek_mla.md`/`gemv.md`),按文档中的“使用示例”编写代码,确保能成功运行。 + - 记录运行过程中的关键日志(如算子执行时间、输出结果),截图证明代码可复现,将截图提交至对应算子文档的 Gitee Issue(需注明“Level 1 验证”)。 +2. **教程文档验证** + - 选择 1 个已完成的教程文档(`auto_tuning.md`/`debug_tools_for_tilelang.md`),按教程步骤操作(如 Auto-Tuning 参数配置、Debug 工具调用)。 + - 记录操作中发现的问题(如缺失的依赖包、步骤描述模糊点),补充完整操作流程后,将“验证结果+补充建议+操作截图”提交至教程文档的 Gitee Issue。 + + +## 三、Level 2:迁移优化类(10分) +### 核心目标 +完成 CUDA 相关文档向 MACA 适配,实现补充算子说明文档。 + +### 任务内容(二选一或任选组合即可) +1. **文档迁移:CUDA 内容适配 MACA** + - 选择 1 个已完成的算子文档(如 `matmul.md`/`elementwise.md`),若文档中包含 CUDA 相关描述(如 CUDA 核函数、线程块配置),将其迁移为 MACA 编程对应的逻辑。 + - 迁移要求:明确 CUDA 语法与 MACA 语法的映射关系,补充 MACA 版本后提交迁移后的文档 PR 至 `docs/deeplearning_operators`。 +2. **教程迁移:MACA环境迁移** + - 选择在CUDA环境上进行解释和说明的文档,将其在MACA环境下进行同样的操作并将需要补充和说明的内容提交PR到对应的文档(如 `Installation.md`)。 + + +## 四、Level 3:文档开发类(20分) +### 核心目标 +编写未完成的算子文档,补充已有文档的 MACA 深度解析。 + +### 任务内容(二选一,需独立完成核心模块) +1. **未完成文档编写** + - 如从 5 个未编写的算子中选择 1个(`convolution.md`/`flash_attention.md`/`flash_linear_attention.md`/`matmul_dequant.md`/`tmac_gpu.md`),按与其他已有的算子文档结构编写文档: + - 算子功能:说明算子的应用场景(如卷积算子用于图像特征提取)、核心计算逻辑; + - 接口参数:列出输入(如输入张量形状、数据类型)、输出(如输出张量维度)、可选参数(如卷积核大小、步长); + - 使用示例:编写 mc_tilelang 调用代码(需基于 MACA 环境),包含数据构造、算子调用、结果验证; + - 性能说明:标注算子在指定设备(如 GPU 型号)下的推荐参数配置。 + - 交付物:编写完成的算子文档,提交 PR 至 `docs/deeplearning_operators`。 +2. **已有文档 MACA 解析补充** + - 选择 1 个已完成的算子文档(如 `matmul.md`),新增“MACA 编程解析”章节: + - 解析内容:包含算子的 MACA 内存布局设计(如张量的 `layout` 参数配置)、计算流程优化(如循环展开、数据分块); + - 代码示例:提供完整的 MACA 优化版算子代码(需包含注释),对比优化前后的性能差异。 + - 交付物:补充后的文档 PR,需附代码运行截图证明优化效果。 + + +## 五、Level 4:复杂开发类(50分) +### 核心目标 +开发复杂融合算子或贡献示例代码,满足大模型推理等高阶需求。 + +### 任务内容 +**example 文件夹代码贡献** + - 为 `mcTileLang/examples` 文件夹新增其他算子的完整使用案例。 + - 案例要求:包含数据准备、算子调用、结果可视化(如打印特征图形状、注意力权重热力图)、性能分析代码,提交代码 PR 并附运行演示截图。 + + +## 六、验证得分规则 +- **Level 1 验证文档上限**:10分(每个文档首次验证得5分,后续重复验证不计分) +- **验证范围**:算子文档验证和教程文档验证均适用此规则 +- **计分方式**:系统会自动识别文档验证记录,同一文档多次提交仅计算首次验证得分 + +## 七、交付物清单(按 Level 汇总) +| Level | 必交交付物 | 可选交付物 | +|-------|------------|------------| +| 1 | 验证截图、Issue 提交记录 | 补充的操作步骤文档 | +| 2 | 迁移后的文档 PR、验证截图 | 详细说明文档 | +| 3 | 未完成算子文档 PR / 补充 MACA 解析的文档 PR | 解析逻辑说明文档 | +| 4 | example 代码 PR | 结果输出和验证的图片 | diff --git a/docs/TileLang.md b/docs/Tilelang/TileLang.md similarity index 90% rename from docs/TileLang.md rename to docs/Tilelang/TileLang.md index 87d5d97..6734ec8 100644 --- a/docs/TileLang.md +++ b/docs/Tilelang/TileLang.md @@ -5,13 +5,13 @@ ### 2. 解决方案:TileLang的技术突破 TileLang作为TileLang社区主导的GPU内核领域专用语言,以“高效开发+性能不妥协”为核心,针对性解决行业痛点: -- **开发效率革命**:采用Python式简洁语法,实现FlashAttention算子仅需80行代码,并保持了与官方版本持平的性能。这种代码量的大幅减少不仅降低了开发门槛,也提高了维护性和可读性。; -- **分层接口适配**:提供3个层次编程接口,覆盖从初学者到专家的全阶段需求,降低国产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社区合作已提前参与该项目,探讨MACAGPU与TileLang的适配(开源仓库:[mcTileLang](https://gitee.com/metax-maca/mcTileLang)),通过MXMACA软件栈实现深度协同,核心算子性能接近国际主流产品。 +- **硬件适配**:MACA AI编译器团队和TileLang社区合作已提前参与该项目,探讨MACA GPU与TileLang的适配(开源仓库:[mcTileLang](https://gitee.com/metax-maca/mcTileLang)),通过MXMACA软件栈实现深度协同,核心算子性能接近国际主流产品。 - **在线环境搭建**:在模力方舟平台提供预配置的TileLang在线体验环境,开发者无需自行搭建硬件,直接基于曦云C500(64GB显存、Intel Xeon Gold 6530)来进行开发; - **资源支持**:提供专属算力券降低体验成本,同时开源完整适配代码与文档,助力生态共建。 @@ -21,7 +21,7 @@ TileLang作为TileLang社区主导的GPU内核领域专用语言,以“高效 ## 二、快速上手:TileLang 国产 GPU 开发实践 ### 1. 环境准备:获取TileLang在线开发资源 #### 步骤1:进入模力方舟算力市场 -访问[模力方舟](https://ai.gitee.com/compute), 点击顶部导航栏“算力市场”,进入MACAGPU资源租用页面。 +访问[模力方舟](https://ai.gitee.com/compute),点击顶部导航栏“算力市场”,进入MACA GPU资源租用页面。 #### 步骤2:领取TileLang专属算力券 - 参与比赛活动,领取TileLang专属算力券; @@ -29,7 +29,7 @@ TileLang作为TileLang社区主导的GPU内核领域专用语言,以“高效 #### 步骤3:选择TileLang镜像与配置 - **硬件配置选择**:默认选择“曦云C500”GPU,单卡配置为64GB显存、12核Intel Xeon Gold 6530 CPU -- **镜像选择**:在“镜像”列表中勾选“基础镜像”下的“TileLang 0.1.5 +- **镜像选择**:在“镜像”列表中勾选“基础镜像”下的“TileLang 0.1.5” - **计费方式**:支持按量收费、包日/包周/包月。 ### 2. 容器启动与TileLang验证 @@ -58,14 +58,14 @@ python3 ./examples/quickstart.py 访问MACA开源项目文档,获取算子开发教程与API说明。 #### 步骤2:尝试核心算子开发 -基于示例代码修改,开发自定义GPU算子(如简化版GEMM算子))。 +基于示例代码修改,开发自定义GPU算子(如简化版GEMM算子)。 #### 步骤3:参与生态贡献 若开发的算子具备通用性,可通过[gitee](https://gitee.com/metax-maca/mcTileLang)提交PR参与TileLang国产GPU生态共建。 ## 三、生态贡献指南:邀您共建TileLang国产GPU生态 -为持续完善mcTileLang仓库功能、降低开发门槛,诚邀所有开发者参与贡献,重点欢迎**Issue反馈**与**Docs/Example类型PR**,具体指南如下: +为持续完善mcTileLang仓库功能、降低开发门槛,诚邀所有开发者参与贡献,重点欢迎**Issue反馈**与**Docs/Example类型PR**,评分详见[Task](Task.md)具体指南如下: ### 1. 积极反馈:提交Issue助力仓库优化 当您遇到以下场景时,欢迎通过仓库“Issues”模块提交反馈,帮助团队定位问题、明确方向: @@ -80,14 +80,14 @@ python3 ./examples/quickstart.py mcTileLang仓库的`docs`(文档)与`examples`(示例)目录是生态核心组成部分,尤其欢迎以下类型PR,共建更易用的开发资源: #### (1)Docs类型PR:完善文档体系 -- **教程迁移**:将已有的基于cuda的教程文档迁移到metax上 -- **新增教程**:补充“TileLang布局优化实战”“MACAGPU性能调优指南”等进阶教程; +- **教程迁移**:将已有的基于CUDA的教程文档迁移到MACA上 +- **新增教程**:补充“TileLang布局优化实战”“MACA GPU性能调优指南”等进阶教程; - **更新说明**:同步API变更(如新增的接口)、修正安装步骤中的过时信息; - **补充案例**:在文档中添加“常见问题排查”(如容器启动失败、编译报错解决)。 #### (2)Example类型PR:丰富算子示例 - **新增算子**:提交RetNet、Mamba等新兴模型的TileLang实现,或补充现有算子的优化版本(如支持不同精度或者混合精度的算子); -- **硬件适配**:提供算子在GPU(如曦云C500)上的适配示例与性能分析。 +- **硬件适配**:提供算子在GPU(如曦云C500)上的适配示例与性能分析 #### (3)PR提交流程 1. Fork mcTileLang仓库到个人账号;