| Files | Last commit | Last update |
|---|---|---|
修改GetArchVersion接口 Co-authored-by: ning_x<chenning54@huawei.com> # message auto-generated for no-merge-commit merge: !4888 merge add_arch_ver into master 修改GetArchVersion接口 Created-by: ning_x Commit-by: ning_x Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改 GetArchVersion及asc_get_arch_ver接口实现,直接返回架构号 由于以上两个接口调用的底层指令get_arch_ver固定返回芯片寄存器内的版本信息,该信息与AscendC对外呈现的架构版本号不一致,容易引起用户困惑。 调整上述接口实现,直接返回对应的架构版本号,确保接口行为与对外定义保持一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4888 | 2 months ago | |
修改GetArchVersion接口 Co-authored-by: ning_x<chenning54@huawei.com> # message auto-generated for no-merge-commit merge: !4888 merge add_arch_ver into master 修改GetArchVersion接口 Created-by: ning_x Commit-by: ning_x Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改 GetArchVersion及asc_get_arch_ver接口实现,直接返回架构号 由于以上两个接口调用的底层指令get_arch_ver固定返回芯片寄存器内的版本信息,该信息与AscendC对外呈现的架构版本号不一致,容易引起用户困惑。 调整上述接口实现,直接返回对应的架构版本号,确保接口行为与对外定义保持一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4888 | 2 months ago | |
扩展pre-commit hooks (第二批目录) Co-authored-by: Water8L<15279328600@163.com> # message auto-generated for no-merge-commit merge: !4183 merge master into master 扩展pre-commit hooks (第二批目录) Created-by: Water8L Commit-by: Water8L Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 在.pre-commit-config.yaml中根据trailing-whitespace和end-of-file-fixer hook,修改tests/api/other impl/matmul + impl/hccl + tests/other tests/api/basic_api + examples/basic_api目录下对应不合规范的文件 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4183 | 3 months ago | |
修改GetArchVersion接口 Co-authored-by: ning_x<chenning54@huawei.com> # message auto-generated for no-merge-commit merge: !4888 merge add_arch_ver into master 修改GetArchVersion接口 Created-by: ning_x Commit-by: ning_x Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改 GetArchVersion及asc_get_arch_ver接口实现,直接返回架构号 由于以上两个接口调用的底层指令get_arch_ver固定返回芯片寄存器内的版本信息,该信息与AscendC对外呈现的架构版本号不一致,容易引起用户困惑。 调整上述接口实现,直接返回对应的架构版本号,确保接口行为与对外定义保持一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4888 | 2 months ago | |
修改GetArchVersion接口 Co-authored-by: ning_x<chenning54@huawei.com> # message auto-generated for no-merge-commit merge: !4888 merge add_arch_ver into master 修改GetArchVersion接口 Created-by: ning_x Commit-by: ning_x Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修改 GetArchVersion及asc_get_arch_ver接口实现,直接返回架构号 由于以上两个接口调用的底层指令get_arch_ver固定返回芯片寄存器内的版本信息,该信息与AscendC对外呈现的架构版本号不一致,容易引起用户困惑。 调整上述接口实现,直接返回对应的架构版本号,确保接口行为与对外定义保持一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [x] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!4888 | 2 months ago | |
fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Co-authored-by: kyzyc<zhuyuchen10@huawei.com> # message auto-generated for no-merge-commit merge: !7020 merge fix/2201-dump-copy-length into master fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Created-by: kyzyc Commit-by: kyzyc Merged-by: cann-robot Description: ## 描述 DumpTensor 片上打印路径给拷贝指令传了错误单位的操作数,使实际搬运量与 TLV 预留量不一致;同时 L0C 单次拷贝缺少 nSize 字段上限的约束。四处问题: 1. **2201 L1 搬运量放大 32 倍**。 copy_cbuf_to_gm 的 lenBurst 单位是 32 字节datablock,原代码直接传字节数,实际搬运量是预留量的 32 倍,会覆写环形缓冲中后续记录所在区域。 2. **2201/5102 L0C 搬运量放大 4 倍**。16x16 的 B32 fractal 是 1024 字节而非 256,原常量使单次拷贝搬运 4 个 fractal。此前无症状,是因为算出的 nSize 仍为 16 的倍数且落在 [0, 4095] 内,指令本身合法,只是多搬。 3. **TLV 预留长度与搬运量不匹配**。预留固定按 32 字节计算,而 L0C 实际按 1024 字节fractal 搬运,length 字段小于真实占用,host 侧按 length 走指针会落入已被覆写的区域。 4. **L0C 单次拷贝超限后静默丢数据**。copy_matrix_cc_to_gm 把 nSize 打包进Xm[15:4],取值上限 4095 且需为 16 的倍数,单次最多承载 255 个 fractal(261120 字节)。超出后 nSize 被截断,按接口文档 nSize=0 视为 NOP,数据一个字节都不搬,但 TLV 头与写指针照常推进,host 读到一条声称有数据的空记录。 本 PR 的改动: - L1 与 L0C 的拷贝长度按各自指令的实际单位换算;L0C fractal 常量改为 1024。 - TLV 改为按 position 实际使用的对齐粒度预留(L0C 取 1024 字节,其余取 32 字节),使 length 与搬运量一致。 - 超过 261120 字节的 L0C payload 在**同一条 DUMP_TENSOR 记录内**分多次拷贝完成,记录结构不变,打屏与离线解析均不受影响。 - super tensor 能力表下沉到各 npu_arch_* 头文件,新增架构不再需要修改共享的__NPU_ARCH__ 列表。 - 所有 position 统一接收对齐后的字节数,由各架构自行换算为本架构指令的单位,参数相应改名为 alignDumpBytes。字节与 datablock 混用正是第 1、2 两处缺陷的成因。 ## 测试 **ISA 层(确认字段宽度与截断行为)** - ccec 对编译期常量 nSize >= 4096 报 the range of 4th parameter must be[0, 4095],4095 通过;对运行时传入的值不报错。 - dav-c220-cube 与 dav-c310-cube 反汇编均为 SHL #4 + ZEROEXT.u16,即静默取 nSize & 0xfff,无 clamp 无诊断。 - 同法确认 copy_ubuf_to_gm 的 lenBurst 为 16 位 32B block、copy_ubuf_to_gm_align_v2 为 21 位字节、copy_cbuf_to_gm 声明即 unsigned short。 **上板验证:Ascend 950PR(dav-3510)** 以 256x256x128 的 fp16 矩阵乘填满 256KB L0C(每元素 128.0,由 Fixpipe 搬出 GM 独立校验 65536 个元素全对),simd_printf_fifo_size_per_core 配 1MB: | dump 量 | 修改前 | 修改后 | |---|---|---| | 65280 元素(255KB,正好压线) | 全 128.0 | 全 128.0 | | 65536 元素(256KB,超一个 fractal) | **打屏与导出 bin 均为全 0.0** | **全 128.0** | **板上验证:Atlas A2(910B4,dav-2201)** simd_printf_fifo_size_per_core 配 2KB,使超拷贝越过环形缓冲末尾后可观测: | 场景 | CANN 9.2.0 自带 devkit | 应用本 PR 后 | |---|---|---| | L1 记录 + 哨兵记录 | **0 条记录**(越界破坏写指针信息) | 两条记录完整、数值正确 | | L0C 记录 + 哨兵记录 | **0 条记录** | 两条记录完整、数值正确 | | UB 记录 + 哨兵记录 | 正确 | 正确(等价性验证) | **离线解析** 用 show_kernel_debug_data 解析导出的 asc_kernel_data_aic_0.bin,确认 super tensor 路径不受本 PR 影响:65280 / 65536 / 8 三条记录均完整拼回,数值全为 128.0。 ## 文档更新 无。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!7020 | 2 days ago | |
fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Co-authored-by: kyzyc<zhuyuchen10@huawei.com> # message auto-generated for no-merge-commit merge: !7020 merge fix/2201-dump-copy-length into master fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Created-by: kyzyc Commit-by: kyzyc Merged-by: cann-robot Description: ## 描述 DumpTensor 片上打印路径给拷贝指令传了错误单位的操作数,使实际搬运量与 TLV 预留量不一致;同时 L0C 单次拷贝缺少 nSize 字段上限的约束。四处问题: 1. **2201 L1 搬运量放大 32 倍**。 copy_cbuf_to_gm 的 lenBurst 单位是 32 字节datablock,原代码直接传字节数,实际搬运量是预留量的 32 倍,会覆写环形缓冲中后续记录所在区域。 2. **2201/5102 L0C 搬运量放大 4 倍**。16x16 的 B32 fractal 是 1024 字节而非 256,原常量使单次拷贝搬运 4 个 fractal。此前无症状,是因为算出的 nSize 仍为 16 的倍数且落在 [0, 4095] 内,指令本身合法,只是多搬。 3. **TLV 预留长度与搬运量不匹配**。预留固定按 32 字节计算,而 L0C 实际按 1024 字节fractal 搬运,length 字段小于真实占用,host 侧按 length 走指针会落入已被覆写的区域。 4. **L0C 单次拷贝超限后静默丢数据**。copy_matrix_cc_to_gm 把 nSize 打包进Xm[15:4],取值上限 4095 且需为 16 的倍数,单次最多承载 255 个 fractal(261120 字节)。超出后 nSize 被截断,按接口文档 nSize=0 视为 NOP,数据一个字节都不搬,但 TLV 头与写指针照常推进,host 读到一条声称有数据的空记录。 本 PR 的改动: - L1 与 L0C 的拷贝长度按各自指令的实际单位换算;L0C fractal 常量改为 1024。 - TLV 改为按 position 实际使用的对齐粒度预留(L0C 取 1024 字节,其余取 32 字节),使 length 与搬运量一致。 - 超过 261120 字节的 L0C payload 在**同一条 DUMP_TENSOR 记录内**分多次拷贝完成,记录结构不变,打屏与离线解析均不受影响。 - super tensor 能力表下沉到各 npu_arch_* 头文件,新增架构不再需要修改共享的__NPU_ARCH__ 列表。 - 所有 position 统一接收对齐后的字节数,由各架构自行换算为本架构指令的单位,参数相应改名为 alignDumpBytes。字节与 datablock 混用正是第 1、2 两处缺陷的成因。 ## 测试 **ISA 层(确认字段宽度与截断行为)** - ccec 对编译期常量 nSize >= 4096 报 the range of 4th parameter must be[0, 4095],4095 通过;对运行时传入的值不报错。 - dav-c220-cube 与 dav-c310-cube 反汇编均为 SHL #4 + ZEROEXT.u16,即静默取 nSize & 0xfff,无 clamp 无诊断。 - 同法确认 copy_ubuf_to_gm 的 lenBurst 为 16 位 32B block、copy_ubuf_to_gm_align_v2 为 21 位字节、copy_cbuf_to_gm 声明即 unsigned short。 **上板验证:Ascend 950PR(dav-3510)** 以 256x256x128 的 fp16 矩阵乘填满 256KB L0C(每元素 128.0,由 Fixpipe 搬出 GM 独立校验 65536 个元素全对),simd_printf_fifo_size_per_core 配 1MB: | dump 量 | 修改前 | 修改后 | |---|---|---| | 65280 元素(255KB,正好压线) | 全 128.0 | 全 128.0 | | 65536 元素(256KB,超一个 fractal) | **打屏与导出 bin 均为全 0.0** | **全 128.0** | **板上验证:Atlas A2(910B4,dav-2201)** simd_printf_fifo_size_per_core 配 2KB,使超拷贝越过环形缓冲末尾后可观测: | 场景 | CANN 9.2.0 自带 devkit | 应用本 PR 后 | |---|---|---| | L1 记录 + 哨兵记录 | **0 条记录**(越界破坏写指针信息) | 两条记录完整、数值正确 | | L0C 记录 + 哨兵记录 | **0 条记录** | 两条记录完整、数值正确 | | UB 记录 + 哨兵记录 | 正确 | 正确(等价性验证) | **离线解析** 用 show_kernel_debug_data 解析导出的 asc_kernel_data_aic_0.bin,确认 super tensor 路径不受本 PR 影响:65280 / 65536 / 8 三条记录均完整拼回,数值全为 128.0。 ## 文档更新 无。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!7020 | 2 days ago | |
Modify the processing logic of int4b_t Co-authored-by: chupeng1996<chupeng5@huawei.com> # message auto-generated for no-merge-commit merge: !6129 merge master into master Modify the processing logic of int4b_t Created-by: chupeng1996 Commit-by: chupeng1996 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> Modify the processing logic of int4b_t ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 编包装包正常 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!6129 | 1 month ago | |
fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Co-authored-by: kyzyc<zhuyuchen10@huawei.com> # message auto-generated for no-merge-commit merge: !7020 merge fix/2201-dump-copy-length into master fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Created-by: kyzyc Commit-by: kyzyc Merged-by: cann-robot Description: ## 描述 DumpTensor 片上打印路径给拷贝指令传了错误单位的操作数,使实际搬运量与 TLV 预留量不一致;同时 L0C 单次拷贝缺少 nSize 字段上限的约束。四处问题: 1. **2201 L1 搬运量放大 32 倍**。 copy_cbuf_to_gm 的 lenBurst 单位是 32 字节datablock,原代码直接传字节数,实际搬运量是预留量的 32 倍,会覆写环形缓冲中后续记录所在区域。 2. **2201/5102 L0C 搬运量放大 4 倍**。16x16 的 B32 fractal 是 1024 字节而非 256,原常量使单次拷贝搬运 4 个 fractal。此前无症状,是因为算出的 nSize 仍为 16 的倍数且落在 [0, 4095] 内,指令本身合法,只是多搬。 3. **TLV 预留长度与搬运量不匹配**。预留固定按 32 字节计算,而 L0C 实际按 1024 字节fractal 搬运,length 字段小于真实占用,host 侧按 length 走指针会落入已被覆写的区域。 4. **L0C 单次拷贝超限后静默丢数据**。copy_matrix_cc_to_gm 把 nSize 打包进Xm[15:4],取值上限 4095 且需为 16 的倍数,单次最多承载 255 个 fractal(261120 字节)。超出后 nSize 被截断,按接口文档 nSize=0 视为 NOP,数据一个字节都不搬,但 TLV 头与写指针照常推进,host 读到一条声称有数据的空记录。 本 PR 的改动: - L1 与 L0C 的拷贝长度按各自指令的实际单位换算;L0C fractal 常量改为 1024。 - TLV 改为按 position 实际使用的对齐粒度预留(L0C 取 1024 字节,其余取 32 字节),使 length 与搬运量一致。 - 超过 261120 字节的 L0C payload 在**同一条 DUMP_TENSOR 记录内**分多次拷贝完成,记录结构不变,打屏与离线解析均不受影响。 - super tensor 能力表下沉到各 npu_arch_* 头文件,新增架构不再需要修改共享的__NPU_ARCH__ 列表。 - 所有 position 统一接收对齐后的字节数,由各架构自行换算为本架构指令的单位,参数相应改名为 alignDumpBytes。字节与 datablock 混用正是第 1、2 两处缺陷的成因。 ## 测试 **ISA 层(确认字段宽度与截断行为)** - ccec 对编译期常量 nSize >= 4096 报 the range of 4th parameter must be[0, 4095],4095 通过;对运行时传入的值不报错。 - dav-c220-cube 与 dav-c310-cube 反汇编均为 SHL #4 + ZEROEXT.u16,即静默取 nSize & 0xfff,无 clamp 无诊断。 - 同法确认 copy_ubuf_to_gm 的 lenBurst 为 16 位 32B block、copy_ubuf_to_gm_align_v2 为 21 位字节、copy_cbuf_to_gm 声明即 unsigned short。 **上板验证:Ascend 950PR(dav-3510)** 以 256x256x128 的 fp16 矩阵乘填满 256KB L0C(每元素 128.0,由 Fixpipe 搬出 GM 独立校验 65536 个元素全对),simd_printf_fifo_size_per_core 配 1MB: | dump 量 | 修改前 | 修改后 | |---|---|---| | 65280 元素(255KB,正好压线) | 全 128.0 | 全 128.0 | | 65536 元素(256KB,超一个 fractal) | **打屏与导出 bin 均为全 0.0** | **全 128.0** | **板上验证:Atlas A2(910B4,dav-2201)** simd_printf_fifo_size_per_core 配 2KB,使超拷贝越过环形缓冲末尾后可观测: | 场景 | CANN 9.2.0 自带 devkit | 应用本 PR 后 | |---|---|---| | L1 记录 + 哨兵记录 | **0 条记录**(越界破坏写指针信息) | 两条记录完整、数值正确 | | L0C 记录 + 哨兵记录 | **0 条记录** | 两条记录完整、数值正确 | | UB 记录 + 哨兵记录 | 正确 | 正确(等价性验证) | **离线解析** 用 show_kernel_debug_data 解析导出的 asc_kernel_data_aic_0.bin,确认 super tensor 路径不受本 PR 影响:65280 / 65536 / 8 三条记录均完整拼回,数值全为 128.0。 ## 文档更新 无。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!7020 | 2 days ago | |
fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Co-authored-by: kyzyc<zhuyuchen10@huawei.com> # message auto-generated for no-merge-commit merge: !7020 merge fix/2201-dump-copy-length into master fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Created-by: kyzyc Commit-by: kyzyc Merged-by: cann-robot Description: ## 描述 DumpTensor 片上打印路径给拷贝指令传了错误单位的操作数,使实际搬运量与 TLV 预留量不一致;同时 L0C 单次拷贝缺少 nSize 字段上限的约束。四处问题: 1. **2201 L1 搬运量放大 32 倍**。 copy_cbuf_to_gm 的 lenBurst 单位是 32 字节datablock,原代码直接传字节数,实际搬运量是预留量的 32 倍,会覆写环形缓冲中后续记录所在区域。 2. **2201/5102 L0C 搬运量放大 4 倍**。16x16 的 B32 fractal 是 1024 字节而非 256,原常量使单次拷贝搬运 4 个 fractal。此前无症状,是因为算出的 nSize 仍为 16 的倍数且落在 [0, 4095] 内,指令本身合法,只是多搬。 3. **TLV 预留长度与搬运量不匹配**。预留固定按 32 字节计算,而 L0C 实际按 1024 字节fractal 搬运,length 字段小于真实占用,host 侧按 length 走指针会落入已被覆写的区域。 4. **L0C 单次拷贝超限后静默丢数据**。copy_matrix_cc_to_gm 把 nSize 打包进Xm[15:4],取值上限 4095 且需为 16 的倍数,单次最多承载 255 个 fractal(261120 字节)。超出后 nSize 被截断,按接口文档 nSize=0 视为 NOP,数据一个字节都不搬,但 TLV 头与写指针照常推进,host 读到一条声称有数据的空记录。 本 PR 的改动: - L1 与 L0C 的拷贝长度按各自指令的实际单位换算;L0C fractal 常量改为 1024。 - TLV 改为按 position 实际使用的对齐粒度预留(L0C 取 1024 字节,其余取 32 字节),使 length 与搬运量一致。 - 超过 261120 字节的 L0C payload 在**同一条 DUMP_TENSOR 记录内**分多次拷贝完成,记录结构不变,打屏与离线解析均不受影响。 - super tensor 能力表下沉到各 npu_arch_* 头文件,新增架构不再需要修改共享的__NPU_ARCH__ 列表。 - 所有 position 统一接收对齐后的字节数,由各架构自行换算为本架构指令的单位,参数相应改名为 alignDumpBytes。字节与 datablock 混用正是第 1、2 两处缺陷的成因。 ## 测试 **ISA 层(确认字段宽度与截断行为)** - ccec 对编译期常量 nSize >= 4096 报 the range of 4th parameter must be[0, 4095],4095 通过;对运行时传入的值不报错。 - dav-c220-cube 与 dav-c310-cube 反汇编均为 SHL #4 + ZEROEXT.u16,即静默取 nSize & 0xfff,无 clamp 无诊断。 - 同法确认 copy_ubuf_to_gm 的 lenBurst 为 16 位 32B block、copy_ubuf_to_gm_align_v2 为 21 位字节、copy_cbuf_to_gm 声明即 unsigned short。 **上板验证:Ascend 950PR(dav-3510)** 以 256x256x128 的 fp16 矩阵乘填满 256KB L0C(每元素 128.0,由 Fixpipe 搬出 GM 独立校验 65536 个元素全对),simd_printf_fifo_size_per_core 配 1MB: | dump 量 | 修改前 | 修改后 | |---|---|---| | 65280 元素(255KB,正好压线) | 全 128.0 | 全 128.0 | | 65536 元素(256KB,超一个 fractal) | **打屏与导出 bin 均为全 0.0** | **全 128.0** | **板上验证:Atlas A2(910B4,dav-2201)** simd_printf_fifo_size_per_core 配 2KB,使超拷贝越过环形缓冲末尾后可观测: | 场景 | CANN 9.2.0 自带 devkit | 应用本 PR 后 | |---|---|---| | L1 记录 + 哨兵记录 | **0 条记录**(越界破坏写指针信息) | 两条记录完整、数值正确 | | L0C 记录 + 哨兵记录 | **0 条记录** | 两条记录完整、数值正确 | | UB 记录 + 哨兵记录 | 正确 | 正确(等价性验证) | **离线解析** 用 show_kernel_debug_data 解析导出的 asc_kernel_data_aic_0.bin,确认 super tensor 路径不受本 PR 影响:65280 / 65536 / 8 三条记录均完整拼回,数值全为 128.0。 ## 文档更新 无。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!7020 | 2 days ago | |
feat: 新增 dav_v516 架构算子条件编译宏支持 Co-authored-by: Bartonzany<lanbin4@huawei.com> # message auto-generated for no-merge-commit merge: !5674 merge feat_dav_v516_macro into master feat: 新增 dav_v516 架构算子条件编译宏支持 Created-by: Bartonzany Commit-by: Bartonzany Merged-by: cann-robot Description: ## 描述 为 asc-devkit 补齐 dav_v516( __NPU_ARCH__ == 5162)架构的条件编译支持:在激活、数学、归一化、量化、reduce、sort/topk、pad/transpose 等高级 API 算子及其 kernel check、tiling、基础 API 接口头文件中,为既有 3510/5102 架构分支并入 __NPU_ARCH__ == 5162,并引入 dav_v516 实现头文件,使算子库在 dav_v516 架构下编译运行。 改动原因:支持 dav_v516(5162)新一代 NPU 架构。 改动方法:在 3510/5102 条件编译分支中并入 __NPU_ARCH__ == 5162,复用 3510 系列实现。 ## 关联的Issue ## 测试 本地执行 build.sh 完成全量编译与打包,成功生成 cann-asc-devkit_9.2.0_linux-aarch64.run。 ## 文档更新 无文档更新。 ## 类型标签 - [ ] 🐛 fix: Bug 修复 - [x] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [ ] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [ ] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!5674 | 1 month ago | |
Restrict clang-format hook to tests Co-authored-by: xun_zhuge<zhugexun@hisilicon.com> Co-authored-by: zhangyujia77<zhangyujia37@huawei.com> # message auto-generated for no-merge-commit merge: !3238 merge update_tests_clang_format into master Restrict clang-format hook to tests Created-by: xun_zhuge Commit-by: zhangyujia77;xun_zhuge Merged-by: cann-robot Description: ## 描述 本 PR 调整 clang-format 的 pre-commit 检查范围,并对当前纳入范围的测试代码执行了一次全量格式化。 主要改动: - 将 .pre-commit-config.yaml 中 clang-format hook 的 files 范围从所有 C/C++/Ascend C 源文件收敛到 tests/ 目录:^tests/.*\.(c|h|cpp|hpp|cc|hh|cxx|hxx|asc)$。 - 移除该 hook 原有的 exclude: ^build/|tests/third_party/,避免和新的 files 范围重复维护。 - 执行 pre-commit run clang-format --all-files,按当前 .clang-format 规则格式化 tests/ 下匹配的 1521 个文件。 - 修复 tests/api/tensor_api/stub/cce_stub.h 中一处宏续行格式不稳定的问题,避免 clang-format 每次运行都继续改同一段宏。 ## 关联的Issue 无 ## 测试 已完成以下验证: - pre-commit validate-config 通过。 - pre-commit run clang-format --files tests/api/tensor_api/stub/cce_stub.h 通过。 - pre-commit run clang-format --all-files 通过。 - 提交时 pre-commit hook 通过:clang-format Passed,OAT Compliance Check Passed。 - OAT 提交检查为增量模式,最终覆盖 1521 个暂存文件,日志显示 All checks passed。 - 推送到 zhugexun/update_tests_clang_format 时远端 Git hooks 检查通过。 ## 文档更新 无文档更新。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] 🐛 fix: Bug 修复 - [ ] ✨ feat: 新功能 - [ ] ⚡ perf: 性能优化 - [ ] ♻️ refactor: 代码重构 - [ ] 🧪 test: 新增或修改测试 - [ ] 📝 docs: 文档更新 - [x] 🔧 ci: CI/CD 配置修改 - [ ] ↩️ revert: 回退 - [x] 🧹 chore: 其他,请具体描述 See merge request: cann/asc-devkit!3238 | 4 months ago | |
fix: 超大 Tensor Dump 分片编号对齐 runtime Co-authored-by: jcmrn0930<2418672268@qq.com> # message auto-generated for no-merge-commit merge: !7069 merge fix/super-tensor-runtime-tags-20261029 into master fix: 超大 Tensor Dump 分片编号对齐 runtime Created-by: jcmrn0930 Commit-by: jcmrn0930 Merged-by: cann-robot Description: 超大 Tensor Dump 原首片/续片编号为 11/12,其中 11 与 runtime 的 DUMP_AICPU 冲突。本修改将 DUMP_SUPER_TENSOR 和 DUMP_SUPER_TENSOR_BODY 显式定义为 12/13,供两条发送路径共用,并删除两条编号 static_assert。 发送端回归用例同步使用生产枚举,校验实际输出的 12/13 编号;分片结构及发送逻辑保持原样。asc-tools 解析器编号通过配套 PR 同步。 验证:按要求,本次提交未运行测试;仅检查提交差异和格式。 See merge request: cann/asc-devkit!7069 | 9 days ago | |
fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Co-authored-by: kyzyc<zhuyuchen10@huawei.com> # message auto-generated for no-merge-commit merge: !7020 merge fix/2201-dump-copy-length into master fix: 修正 DumpTensor 拷贝边界并约束 L0C 单次拷贝上限 Created-by: kyzyc Commit-by: kyzyc Merged-by: cann-robot Description: ## 描述 DumpTensor 片上打印路径给拷贝指令传了错误单位的操作数,使实际搬运量与 TLV 预留量不一致;同时 L0C 单次拷贝缺少 nSize 字段上限的约束。四处问题: 1. **2201 L1 搬运量放大 32 倍**。 copy_cbuf_to_gm 的 lenBurst 单位是 32 字节datablock,原代码直接传字节数,实际搬运量是预留量的 32 倍,会覆写环形缓冲中后续记录所在区域。 2. **2201/5102 L0C 搬运量放大 4 倍**。16x16 的 B32 fractal 是 1024 字节而非 256,原常量使单次拷贝搬运 4 个 fractal。此前无症状,是因为算出的 nSize 仍为 16 的倍数且落在 [0, 4095] 内,指令本身合法,只是多搬。 3. **TLV 预留长度与搬运量不匹配**。预留固定按 32 字节计算,而 L0C 实际按 1024 字节fractal 搬运,length 字段小于真实占用,host 侧按 length 走指针会落入已被覆写的区域。 4. **L0C 单次拷贝超限后静默丢数据**。copy_matrix_cc_to_gm 把 nSize 打包进Xm[15:4],取值上限 4095 且需为 16 的倍数,单次最多承载 255 个 fractal(261120 字节)。超出后 nSize 被截断,按接口文档 nSize=0 视为 NOP,数据一个字节都不搬,但 TLV 头与写指针照常推进,host 读到一条声称有数据的空记录。 本 PR 的改动: - L1 与 L0C 的拷贝长度按各自指令的实际单位换算;L0C fractal 常量改为 1024。 - TLV 改为按 position 实际使用的对齐粒度预留(L0C 取 1024 字节,其余取 32 字节),使 length 与搬运量一致。 - 超过 261120 字节的 L0C payload 在**同一条 DUMP_TENSOR 记录内**分多次拷贝完成,记录结构不变,打屏与离线解析均不受影响。 - super tensor 能力表下沉到各 npu_arch_* 头文件,新增架构不再需要修改共享的__NPU_ARCH__ 列表。 - 所有 position 统一接收对齐后的字节数,由各架构自行换算为本架构指令的单位,参数相应改名为 alignDumpBytes。字节与 datablock 混用正是第 1、2 两处缺陷的成因。 ## 测试 **ISA 层(确认字段宽度与截断行为)** - ccec 对编译期常量 nSize >= 4096 报 the range of 4th parameter must be[0, 4095],4095 通过;对运行时传入的值不报错。 - dav-c220-cube 与 dav-c310-cube 反汇编均为 SHL #4 + ZEROEXT.u16,即静默取 nSize & 0xfff,无 clamp 无诊断。 - 同法确认 copy_ubuf_to_gm 的 lenBurst 为 16 位 32B block、copy_ubuf_to_gm_align_v2 为 21 位字节、copy_cbuf_to_gm 声明即 unsigned short。 **上板验证:Ascend 950PR(dav-3510)** 以 256x256x128 的 fp16 矩阵乘填满 256KB L0C(每元素 128.0,由 Fixpipe 搬出 GM 独立校验 65536 个元素全对),simd_printf_fifo_size_per_core 配 1MB: | dump 量 | 修改前 | 修改后 | |---|---|---| | 65280 元素(255KB,正好压线) | 全 128.0 | 全 128.0 | | 65536 元素(256KB,超一个 fractal) | **打屏与导出 bin 均为全 0.0** | **全 128.0** | **板上验证:Atlas A2(910B4,dav-2201)** simd_printf_fifo_size_per_core 配 2KB,使超拷贝越过环形缓冲末尾后可观测: | 场景 | CANN 9.2.0 自带 devkit | 应用本 PR 后 | |---|---|---| | L1 记录 + 哨兵记录 | **0 条记录**(越界破坏写指针信息) | 两条记录完整、数值正确 | | L0C 记录 + 哨兵记录 | **0 条记录** | 两条记录完整、数值正确 | | UB 记录 + 哨兵记录 | 正确 | 正确(等价性验证) | **离线解析** 用 show_kernel_debug_data 解析导出的 asc_kernel_data_aic_0.bin,确认 super tensor 路径不受本 PR 影响:65280 / 65536 / 8 三条记录均完整拼回,数值全为 128.0。 ## 文档更新 无。 ## 类型标签 - [x] 🐛 fix: Bug 修复 - [x] 🧪 test: 新增或修改测试 See merge request: cann/asc-devkit!7020 | 2 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 2 months ago | ||
| 2 months ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 2 days ago | ||
| 2 days ago | ||
| 1 month ago | ||
| 2 days ago | ||
| 2 days ago | ||
| 1 month ago | ||
| 4 months ago | ||
| 9 days ago | ||
| 2 days ago |