| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
matmul的告警清理 Co-authored-by: root<yangyang306@hisilicon.com> # message auto-generated for no-merge-commit merge: !232 merge master into master matmul的告警清理 Created-by: yangyang016 Commit-by: root Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 变更概述 修复设备内存指针类型定义,将 GM_ADDR 类型统一替换为标准 uint8_t*,并修正 aclrtMalloc 调用方式以符合 API 规范。 主要改动点 - 类型重构: 所有设备内存指针从 GM_ADDR 改为 uint8_t*,消除宏依赖 - 内存分配: 采用 void* 中间变量 + reinterpret_cast 的标准调用模式 - 头文件: 补充 #include 以支持 uint8_t 类型 - 智能指针: 同步更新 std::unique_ptr 初始化逻辑 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 增量编译: matmul_tutorial_mxfp4_base、matmul_a16w16_swat、quant_matmul_mxfp4_swat、quant_matmul_mxfp8_swat,均 **build 成功**。 - 在对应 build_out_usr_local/... 目录下:gen_data + 运行可执行文件,校验输出中含 **[PASS]**。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/cann-samples!232 | 4 个月前 | |
更新Samples/0_Introduction/npu_execution/README.md 文档 Co-authored-by: 任柏涛<renbotao@h-partners.com> # message auto-generated for no-merge-commit merge: !252 merge master into master 更新Samples/0_Introduction/npu_execution/README.md 文档 Created-by: ren-botao Commit-by: 任柏涛;ren-botao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 新增一份详细的技术文档,描述 NPU 算子从 PyTorch 调用到芯片执行的完整链路。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#166](https://gitcode.com/cann/cann-samples/issues/166) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新文档 Samples/0_Introduction/npu_execution/README.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!252 | 4 个月前 | |
fix: 修复 vector_add 编译告警 Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !210 merge fix-vector-add-warnings into master fix: 修复 vector_add 编译告警 Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 描述 vector_add 原来将 host 侧 device 指针声明为 GM_ADDR。GM_ADDR 在 bisheng 中是带 __gm__ 地址空间限定的 uint8_t *,通过 (void **)&d_A 传给 aclrtMalloc 时会形成 __gm__ uint8_t ** 到 void ** 的嵌套指针转换,从而产生地址空间限定丢失相关的编译告警。 本次参考 asc-devkit 中 basic_api_tque_add 的写法:kernel 入参继续使用 GM_ADDR,host 侧 device 指针改为普通 uint8_t *,使 aclrtMalloc 接收普通 host 指针地址,避免对 __gm__ 指针做嵌套转换。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/135 ## 测试 单独编译 vector_add 通过,编译告警已消除。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!210 | 5 个月前 | |
refactor: 将 vector_add 示例从 AscendC 标准 API 改写为 C API Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !241 merge master into master refactor: 将 vector_add 示例从 AscendC 标准 API 改写为 C API Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 将 Samples/0_Introduction/vector_add 示例从 AscendC 标准 API 改写为 C API 形式。主要改动如下: **kernel 侧改动(main.asc):** - 将 AscendC 标准 API 调用(TPipe、TQue、LocalTensor、DataCopyPad、AscendC::Add 等)替换为 C API 调用(asc_init、asc_copy_gm2ub_sync、asc_add_sync、asc_copy_ub2gm_sync) - 头文件从 kernel_operator.h + platform/platform_ascendc.h 替换为 c_api/asc_simd.h - 移除模板化的 kernel 函数,改为具体的 float 类型 kernel - 移除动态 tiling 参数计算(calc_tiling_params),改为固定 tiling 常量(TILE_LENGTH=2048、NUM_BLOCKS=8) - 使用 __ubuf__ 声明 UB buffer 替代 TQue 队列管理 - kernel 调用方式从模板实例化 add_kernel<float><<<>>> 改为直接调用 add_kernel<<<>>> - 移除冗余注释 **CMakeLists.txt 改动:** - 移除 platform 和 tiling_api 链接依赖 ## 关联的Issue - #163 ## 测试 - 需在昇腾 NPU 环境上验证 C API 版 vector_add 的计算结果正确性 - 验证不同数据量(整块 / 尾块)场景下的正确性 ## 文档更新 - 代码文件头注释从 Vector Addition Example 更新为 Vector Addition Example (C API) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构 - 从标准 API 迁移到 C API See merge request: cann/cann-samples!241 | 4 个月前 | |
refactor: 将 vector_add 示例从 AscendC 标准 API 改写为 C API Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !241 merge master into master refactor: 将 vector_add 示例从 AscendC 标准 API 改写为 C API Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 将 Samples/0_Introduction/vector_add 示例从 AscendC 标准 API 改写为 C API 形式。主要改动如下: **kernel 侧改动(main.asc):** - 将 AscendC 标准 API 调用(TPipe、TQue、LocalTensor、DataCopyPad、AscendC::Add 等)替换为 C API 调用(asc_init、asc_copy_gm2ub_sync、asc_add_sync、asc_copy_ub2gm_sync) - 头文件从 kernel_operator.h + platform/platform_ascendc.h 替换为 c_api/asc_simd.h - 移除模板化的 kernel 函数,改为具体的 float 类型 kernel - 移除动态 tiling 参数计算(calc_tiling_params),改为固定 tiling 常量(TILE_LENGTH=2048、NUM_BLOCKS=8) - 使用 __ubuf__ 声明 UB buffer 替代 TQue 队列管理 - kernel 调用方式从模板实例化 add_kernel<float><<<>>> 改为直接调用 add_kernel<<<>>> - 移除冗余注释 **CMakeLists.txt 改动:** - 移除 platform 和 tiling_api 链接依赖 ## 关联的Issue - #163 ## 测试 - 需在昇腾 NPU 环境上验证 C API 版 vector_add 的计算结果正确性 - 验证不同数据量(整块 / 尾块)场景下的正确性 ## 文档更新 - 代码文件头注释从 Vector Addition Example 更新为 Vector Addition Example (C API) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:重构 - 从标准 API 迁移到 C API See merge request: cann/cann-samples!241 | 4 个月前 | |
充实 0_Introduction 目录文档,补充各示例的学习目标与基础知识说明 Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !244 merge fix/issue-80-0-introduction-doc into master 充实 0_Introduction 目录文档,补充各示例的学习目标与基础知识说明 Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 关联 Issue Fixes #80 ## 变更说明 Issue #80 反馈 0_Introduction/README.md 过于简单,初学者查看文档不知道能学习到什么。 本次变更: - **新增 npu_execution 条目**:该目录此前在 README 中缺失,补充了其涵盖的执行链路知识点 - **为 vector_add 和 matmul 补充具体的学习要点**:列出每个示例涉及的核心概念(如 DataCopy、DoubleBuffer、Tiling、TPipe、profiling 等) - **增加概述表格与学习路径建议**:帮助新手按序阅读,明确每个示例能学到什么 ## 测试计划 - [x] 纯文档变更,无代码改动,不影响编译 - [x] CI 文档检查通过 See merge request: cann/cann-samples!244 | 4 个月前 |
Introduction
面向昇腾 NPU 算子开发的入门指引,帮助开发者建立基本概念,补全从入门到精通的知识空缺。
本目录提供三个层次的学习路径,建议按顺序阅读:
| 示例 | 学习目标 |
|---|---|
| npu_execution | 理解算子从 Runtime 下发到芯片执行的完整链路,建立对任务调度、硬件初始化、计算执行的全局认知 |
| vector_add | 掌握 AscendC Vector Core kernel 的基本编程模型:数据搬运、向量计算、流水并行(DoubleBuffer),以及编译运行流程 |
| matmul | 掌握 AscendC Cube Core kernel 的基本编程模型:矩阵分块(Tiling)、Cube 指令调用,以及性能 profiling 方法 |
npu_execution
纯概念文档,无代码。拆解一个 NPU 算子从 PyTorch 调用到芯片执行所经历的完整链路。
vector_add
第一个动手示例。通过实现向量逐元素加法,学习 AscendC Vector Core kernel 的基本编程模型与编译运行流程。
vector_add_c_api
演示如何使用 Ascend C API(C语言风格接口)在 NPU 上编写简单的 Vector Core kernel,实现向量逐元素相加。入门级向量计算示例。支持架构:dav-2201。
matmul
Cube Core 入门示例。通过实现矩阵乘法,学习 AscendC Cube Core kernel 的基本编程模型与性能 profiling 方法。