| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Add AllGather Matmul UDMA Co-authored-by: wuzhangda<wuzhangda@huawei.com> # message auto-generated for no-merge-commit merge: !87 merge allgather_matmul_udma into master Add AllGather Matmul UDMA Created-by: wuzhangda Commit-by: wuzhangda Merged-by: cann-robot Description: ## 变更描述 / Description <!-- 本 PR 做了什么,为什么需要 / What does this PR do and why --> 新增了基于 UDMA(User Direct Memory Access)的 AllGather + MatMul 融合算子实现。 在 AIV 子核上使用 UDMA 直接跨节点传输矩阵数据,替代传统的 MTE 拷贝路径,减少数据搬运延迟。 当前通信策略是卡内搬运使用MTE从GM_A -> 本卡Shmem,卡间搬运使用UDMA从GM_A -> 远端Shmem ## 改动类型 / Change Type - [ ] Bug 修复 / Bug Fix - [x] 新功能 / New Feature - [ ] 性能优化 / Performance - [ ] 代码重构 / Refactoring - [ ] 文档更新 / Documentation - [ ] 测试相关 / Test - [ ] 其它 / Other ## 关联 Issue / Related Issues <!-- Closes #000 可自动关闭 / Closes #000 to auto-close --> - Closes # - References # ## 测试信息 / Testing <!-- 简要测试说明或关键结果 / Brief test description or key results --> - [x] 单元测试通过 / UT passed - [x] 集成测试通过 / ST passed - [x] 人工验证通过 / Manual verified ## 检查清单 / Checklist - [x] 代码符合规范 / Code follows style guide - [x] 测试添加并通过 / Tests added and passed - [x] 文档已更新 / Docs updated if needed - [x] 无硬编码敏感信息 / No secrets hardcoded - [x] 提交信息符合规范 / Commit message follows convention See merge request: cann/catccos!87 | 8 天前 | |
Add device wrapper Co-authored-by: caixuyi<caixuyi1@huawei.com> # message auto-generated for no-merge-commit merge: !14 merge add_device into master Add device wrapper Created-by: caixuyi Commit-by: caixuyi Merged-by: cann-robot Description: ## 变更描述 / Description ### 背景 当前各 DGemm 示例中直接在 global kernel 内组装 kernel 参数并启动算子,参数构造逻辑分散在不同 example 中,不利于复用,也不方便 dynamic tiling 测试框架统一调度。 ### 修改内容 #### 1. 新增统一 DeviceDGemm 封装 - 新增 include/catccos/dgemm/device/device_dgemm.hpp - 提供统一的 Host 侧接口: - Initialize(args):将用户侧 Arguments 转换为 kernel 执行所需 Params - Run(stream, blockDim, fftsAddr):统一启动 DGemm kernel - 支持 fftsAddr 为 0 或非 0 两种 kernel 启动路径 #### 2. 重构 DGemm kernel 参数接口 - 为多个 DGemm kernel 补充 Arguments 和 ToUnderlyingArguments - 将原先分散在 device wrapper/global kernel 中的 layout、通信参数、scheduler 参数构造逻辑下沉到 kernel 内部 - 将 Params 构造函数调整为 CATLASS_HOST_DEVICE,支持 Host 侧构造参数 涉及算子包括: - allgather matmul - allgather matmul rdma - allgather matmul with gather result - allgather matmul dequant / dequant bias - alltoallv grouped matmul - grouped matmul alltoallv - alltoallv gmm v2 - matmul allreduce - matmul reduce scatter #### 3. 重构 examples 调用方式 - 各 example 的 *_device.h 改为定义 Config 模板和 DeviceDGemm 类型别名 - 各 main.cpp 改为通过: - 构造 DeviceOp::Arguments - deviceOp.Initialize(args) - deviceOp.Run(stream, BLOCK_NUM, fftsAddr) 启动算子 - 移除 example 中重复的 global kernel 参数拼装逻辑 #### 4. 调整 dynamic tiling 测试目录 - 将 examples/dynamic_tiling 移动到 tests/dynamic_tiling - 新增 tests/CMakeLists.txt,并在根 CMakeLists.txt 中添加 add_subdirectory(tests) - 更新 dynamic tiling README,补充测试使用方式和新增算子接入说明 - 更新 examples/run_all_examples.sh 中 dynamic tiling 的路径 #### 5. 其他脚本调整 - dispatch_gmm 和 dispatch_gmm_swiglu 运行脚本中补充 shmem 环境初始化 - run_all_examples.sh 中恢复运行: - alltoallv_grouped_matmul - grouped_matmul_alltoallv ### 验证 - 已完成代码重构和构建脚本路径调整 - dynamic tiling 测试入口已迁移至 tests/dynamic_tiling - 示例调用已统一切换为 DeviceDGemm::Initialize + Run 方式 ### 影响范围 - DGemm kernel 参数构造方式发生变化 - examples 的启动方式发生变化 - dynamic tiling 从 example 示例目录调整为 tests 测试目录 ## 改动类型 / Change Type - [ ] Bug 修复 / Bug Fix - [x] 新功能 / New Feature - [ ] 性能优化 / Performance - [x] 代码重构 / Refactoring - [ ] 文档更新 / Documentation - [ ] 测试相关 / Test - [ ] 其它 / Other ## 关联 Issue / Related Issues <!-- Closes #123 可自动关闭 / Closes #123 to auto-close --> - Closes # - References # ## 测试信息 / Testing <!-- 简要测试说明或关键结果 / Brief test description or key results --> - [x] 单元测试通过 / UT passed - [ ] 集成测试通过 / ST passed - [x] 人工验证通过 / Manual verified ## 检查清单 / Checklist - [x] 代码符合规范 / Code follows style guide - [x] 测试添加并通过 / Tests added and passed - [x] 文档已更新 / Docs updated if needed - [x] 无硬编码敏感信息 / No secrets hardcoded - [x] 提交信息符合规范 / Commit message follows convention See merge request: cann/catccos!14 | 2 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 8 天前 | ||
| 2 个月前 |