| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 开放 datadump_kfc_interface.h 为仓内公共头文件 Co-authored-by: liu-lu<www.liulu824910939@qq.com> # message auto-generated for no-merge-commit merge: !4198 merge master into master feat: 开放 datadump_kfc_interface.h 为仓内公共头文件 Created-by: liu-lu Commit-by: liu-lu Merged-by: cann-robot Description: # Pull Request ## 描述 将 datadump_kfc_interface.h 从 src/aicpu_sched/aicpu_schedule/core/dfx/ 内部目录迁移到 src/inc/aicpu_sched/ 公共头文件目录,使其成为仓内开放接口,供 runtime 其他子模块引用。 同时补充该头文件缺失的标准库依赖声明(#include <cstdint>、#include <string>、#include <vector>),确保独立引用时编译通过。同步更新 3 个 CMakeLists.txt 的头文件搜索路径。 ### 变更清单 | 文件 | 变更说明 | |------|---------| | src/inc/aicpu_sched/datadump_kfc_interface.h | 从 core/dfx/ 迁移到 src/inc/aicpu_sched/,补充 <cstdint>、<string>、<vector> 头文件 | | src/aicpu_sched/aicpu_schedule/CMakeLists.txt | 在 commom_inc_path 中添加 ${RUNTIME_DIR}/src/inc/aicpu_sched(2 处) | | tests/ut/aicpu_sched/aicpu_schedule/st/CMakeLists.txt | 同步添加头文件搜索路径 + 修复行尾换行符 | | tests/ut/aicpu_sched/aicpu_schedule/ut/CMakeLists.txt | 同步添加头文件搜索路径 | ## 变更类型 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #834 <!-- 合并后关闭已关联的 Issue --> ## 如何测试 1. **编译构建测试**:执行 runtime 仓完整编译,验证 CMakeLists.txt 头文件搜索路径变更正确,编译无报错 2. **头文件引用测试**:在其他模块中 #include "datadump_kfc_interface.h",验证头文件可被正确找到并编译通过 3. **UT/ST 测试**:执行 tests/ut/aicpu_sched/aicpu_schedule/ 下的 UT 和 ST 测试,验证测试用例全部通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次变更仅涉及头文件位置迁移和 CMakeLists.txt 路径同步,不修改任何功能代码逻辑。 See merge request: cann/runtime!4198 | 24 天前 | |
【PR】: feat: runtime printf特性重构,将printf.cc 的 dump 数据解析职责从 runtime 剥离至 adump 组件 Co-authored-by: liguochao1<liguochao1@huawei.com> # message auto-generated for no-merge-commit merge: !4067 merge printf_refactor_ into master 【PR】: feat: runtime printf特性重构,将printf.cc 的 dump 数据解析职责从 runtime 剥离至 adump 组件 Created-by: liguochao1 Commit-by: liguochao1 Merged-by: cann-robot Description: # Pull Request ## 描述 需求背景: 当前 runtime printf.cc 同时承担"通道"与"解析"双重职责,现有实现中 ParsePrintf(SIMD)和 ParseSimtPrintf(SIMT)直接解析 dump 数据并打印输出。runtime组件强感知dump数据结构,导致新增dump类型时,需要同时修改runtime和adump代码,希望将dump数据解析逻辑从runtime剥离至adump组件,runtime仅仅作为数据通道,负责device环形缓冲区的初始化,D2H数据搬运,读指针推进;dump数据的解析,打印和Timestamp上报等,全部由adump组件回调函数完整。 方案: 将dump数据解析逻辑从runtime剥离至adump组件,runtime仅仅作为数据通道,负责device环形缓冲区的初始化,D2H数据搬运,读指针推进;dump数据的解析,打印和Timestamp上报等,全部由adump组件回调函数完整。 | # | 原则 | 说明 | |---|------|------| | 1 | **runtime 不解析 infoMsg 语义** | runtime 不解析 infoMsg 内容(格式串/tensor 数据等);SIMT pack walk 仅读 type+infoLen 定位记录边界,属环形缓冲管理 | | 2 | **环形缓冲管理保留 runtime** | D2H 搬运、SIMT 线性化( GetReadLenAndAddr,仅供 pack walk 用,不传给 adump)、SIMT pack walk(CollectDumpInfoFromBuffer,算 processedLen 供清零和 readIdx 推进)、读指针推进、H2D 回写、SIMT 已读区清零——均为通道职责,保留在 runtime。**SIMD 不需要线性化**(单生产者无并发,readIdx = writeIdx 直接对齐) | | 3 | **hostData 初始化保留 runtime** | InitPrintf / InitSimtPrintf 中构造 BlockInfo / BlockReadInfo / BlockWriteInfo 并 H2D 的逻辑不变。 | | 4 | **dump数据解析归 adump** | 线性化(处理回绕)、pack walk(SIMT 确定完整 pack 解析范围)、格式化打印(stdout + RT_LOG)、Tensor 打印、Timestamp 收集与统一 msprof 上报、落盘——全部归 adump。adump 承担回绕处理职责。 | | 5 | adump 始终注册回调 | dfx so 加载时无条件注册回调,不依赖环境变量。环境变量仅控制是否落盘 .bin 文件。 | | 6 | 旧接口日落 | rtSetKernelDfxInfoCallback接口直接删除 | | 7 | **回调函数定义** | using rtParseDfxInfoFunc = void (*)(const rtDFXParseParam* param, uint64_t* consumedLen),结构体包含 data/datalen/readIdx/writeIdx/coreType/coreId/deviceId。 | | 8 | **回调注册接口** | rtError_t rtRegisterParseDFXInfoFunc(rtParseDfxInfoFunc func) | | 9 | 注册时机 | dfx so 加载时,KernelDfxDumper 构造函数中调用 rtRegisterParseDFXInfoFunc| | 10 | cb 传整个 block | data=block 原始内存首地址,datalen=blockSize(uint32_t)。adump 从 block 内部自行提取 readIdx/writeIdx/packIdx/remainLen | | 11 | SIMD readIdx=writeIdx(无线性化);SIMT 保留半包 | SIMD 无并发直接对齐,不需要线性化/清零;SIMT 保留 pack walk,只消费完整 pack,半包留存下一轮,需清零 | | 12 | readIdx 推进不依赖回调 | runtime 自主推进(与现有实现一致),cb == nullptr(未加载 dfx so)时 readIdx 仍正常推进,只是无解析输出。 1. **runtime不解析 block infoMsg语义**: runtime 不解析 infoMsg 内容(格式串/tensor 数据等);SIMT pack walk 仅读 type+infoLen 定位记录边界,属环形缓冲管理 。 2. **runtime 不校验 cb 合法性**:SetCallback 无条件赋值 cb_ = func,允许 nullptr(清除回调)、允许重复注册(新值覆盖旧值)。客户端传入什么,runtime 侧保留什么。 3. **回调通过 rtDFXParseParam 传参**:回调签名为 void (*)(const rtDFXParseParam* param, uint64_t* consumedLen),结构体包含 data/datalen/readIdx/writeIdx/coreType/coreId/deviceId。 4. **SIMD 全量消费**:SIMD 单核独占 block,无并发写入,cb 应全量处理数据。consumedLen 仅作为标志位(0=未处理,非0=已处理),readIdx 直接对齐 writeIdx,不使用 consumedLen 增量推进。 5. **SIMT 增量消费**:SIMT 多线程共享 block,cb 返回 consumedLen 表示实际消费字节数。runtime 用 availableData clamp 防止 consumedLen 超过可用数据量(与 V1 GetReadLenAndAddr 逻辑一致)。 6. **SIMT availableData 计算**:writeIdx 单调递增,用绝对值差判断溢出,取模判断回绕(与 V1 GetReadLenAndAddr 行 908-929 完全一致)。 7. **回调传整个 block**:param.data 为整个 block 原始内存首地址(含 BlockInfo + ReadInfo + 数据区 + WriteInfo),param.datalen 为 blockSize。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 测试步骤和重构钱保持一致,加载开启printf特性的kernel -> kernel运行,ascend c输出dump数据 -> runtime D2H拷贝数据 -> 调用adump回调解析数据 -> 数据打印、时间戳上报、数据落盘 。 2. 主要测试adump解析数据的格式是否正确 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4067 | 27 天前 | |
【PR】: fix compile gcc 16 failed Co-authored-by: duanpengliang<duanpengliang@huawei.com> # message auto-generated for no-merge-commit merge: !4377 merge master_gcc_16_fix into master 【PR】: fix compile gcc 16 failed Created-by: duanpengliang Commit-by: duanpengliang Merged-by: cann-robot Description: # Pull Request ## 描述 修复gcc 16编译ut失败 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: gcc 16编译源码与ut都成功 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4377 | 21 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 24 天前 | ||
| 27 天前 | ||
| 21 天前 |