| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
统一streamId,taskId和batchId的字节大小为uint32_t Co-authored-by: panzhaohu<panzhaohu1@h-partners.com> # message auto-generated for no-merge-commit merge: !388 merge 0728_master into master 统一streamId,taskId和batchId的字节大小为uint32_t Created-by: panzhaohu Commit-by: panzhaohu Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** streamId在代码有的地方是uint16_t,有的地方是uint32_t,不方便维护,现在统一大小 - **修改内容:** pre_commit扫描时会将变量名称*Datas改为Data,添加屏蔽规则 log_modeling里将LogModeling::GenMergeTaskKey(const HalLogData& logData)返回值改为结构体struct MergeTaskKeyData { uint32_t contextId; uint32_t taskId; uint32_t streamId; bool operator<(const MergeTaskKeyData& other) const { if (contextId != other.contextId) return contextId < other.contextId; if (taskId != other.taskId) return taskId < other.taskId; return streamId < other.streamId; } }; 因为将streamId和taskId扩容,组成的返回值超过uint64_t 核心数据结构 TaskId::streamId 类型变更: 将 analysis/csrc/domain/valueobject/include/task_id.h 中 TaskId 的 streamId 成员从 uint16_t 改为 uint32_t,构造函数参数和 IDHasher 哈希函数中的 hash<uint16_t> 同步改为 hash<uint32_t>,是本次统一的基础变更。 移除 assembler/processor 中冗余的类型转换: 在 op_summary_assembler.cpp、task_time_assembler.cpp、ascend_hardware_assembler.cpp、block_detail_assembler.cpp、overlap_analysis_processor.cpp、page_fault_processor.cpp 和 load_host_data.cpp 等文件中,移除了构造 TaskId 时对 streamId 的 static_cast<uint16_t>() 转换,因为字段类型现已匹配。 CCU/KFC/DPU 相关实体的 streamId 类型统一: 在 ccu_mission_processor.h、ccu_mission_data.h、dpu_processor.h、dpu_data.h、kfc_task_processor.h 和 kfc_turn_data.h 中,将各结构体(CCUMissionInfo、DPUData、KfcTurnData 等)及 using 类型别名(OriCCUMissionData、TrackFormat、OriKfcCommData 等)中的 streamId 从 uint16_t 改为 uint32_t,初始值也从 UINT16_MAX 改为 UINT32_MAX。 log_modeling.cpp 中分组键位运算调整: 由于 streamId 扩展为 32 位,GenMergeTaskKey 中 CONTEXT_OFFSET 从 32 改为 48、TASK_OFFSET 从 16 改为 32,新增 LOW_32BIT_MASK 常量,低 32 位用于存放完整的 streamId,高 16 位改为存放 deviceId 替代原来的 contextId;GenGroupKey 返回类型保持不变但内部直接使用 32 位 streamId。 持久化层和 HAL 实体中 streamId 相关类型适配: 在 ts_track_persistence.cpp 中将 TaskTypeDataFormat、StepTraceDataFormat 等数据库查询格式中的 stream_id 字段从 uint16_t 改为 uint32_t;在 ascend_obj.h 中将 CaptureStreamInfo::originalStreamId 改为 uint32_t;在 rt_add_info_center.cpp 中同步更新 LoadCaptureInfoDB 的查询 DataFormat;在 pmu_modeling.h 中将 pmu_ 映射的键类型从 uint16_t 改为 uint32_t;step_trace_tasks.h 中 allReduceTable 和 getNextTable 的键类型也同步改为 uint32_t。 ---- ## 2. 功能验证 - [ ] **功能自验** - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟)  ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!388 | 12 天前 | |
adapt the case when prof level 0 with task track shapes only (runtime op) Co-authored-by: xieanran<694099604@qq.com> # message auto-generated for no-merge-commit merge: !445 merge master into master adapt the case when prof level 0 with task track shapes only (runtime op) Created-by: SoraAzzz Commit-by: xieanran Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 识别到capture的task time l0场景下目前aclnn和runtime都会上报算子tensor,但是为避免aclnn不上报的场景,做兼容性处理 - **修改内容:** 修改AddTensorShapeInfo 接口,重构接口,减少参数传递深度,l0场景支持 仅 task track 场景支持 tensor 信息落盘。Python 侧同步适配 && UT ---- ## 2. 功能验证 - [x] **功能自验**   - [x] **本地自验用例截图** - [x] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟)  ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [x] **是否经过代码检视** - [x] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:___2_ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [x] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [x] **不允许私有的文件操作,需要使用公共模块的安全函数** - [x] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [x] **数组访问需要校验越界场景,对除法需要做除零校验** - [x] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [x] **需要充分进行接口输入和返回值异常情况的校验** - [x] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [x] **指针使用前需要判空** - [x] **数值计算校验溢出和反转** - [x] **不可存在内存泄漏(异常场景需要释放内存)** - [x] **类型转换不能出现数据截断** - [x] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [x] **拷贝内存时,目的缓冲区不小于源缓冲区** - [x] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!445 | 1 小时前 | |
hash key 偶现db存储乱码 Co-authored-by: Seanesmhxocism<wangzixuan54@huawei.com> # message auto-generated for no-merge-commit merge: !412 merge pyDev into master hash key 偶现db存储乱码 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 目前根据初始打印,能明确存储hashDumper前数据内容均正确,但是存入db后可能存在数据问题。 void Connection::BindParameters(std::string value) // value 是按值传入的局部拷贝 { sqlite3_bind_text(stmt_, ++index_, value.c_str(), -1, nullptr); // ← 第5参是 nullptr } sqlite3_bind_text 的第 5 个参数是析构函数指针,决定 SQLite 是否拷贝字符串: nullptr == SQLITE_STATIC:告诉 SQLite 这块内存是静态的、不会被释放,SQlite 只存指针、不做拷贝 SQLITE_TRANSIENT:让 SQLite 立即做一次私有拷贝 而这里 value 是 BindParameters 的局部变量(还是按值传入的副本),函数一返回,value 就析构了,value.c_str() 指向的缓冲区就失效了。此时 SQLite 里存的 stmt 还指向这块已释放的栈/堆内存,等 sqlite3_step() 真正执行插入时,读到的就是悬垂指针指向的垃圾内容 —— 这就是乱码。 为什么偏偏是 hash_key 乱、value 看起来正常:每一行是连续两次 BindParameters(先 key 后 value),两次调用复用同一段栈帧。key 绑定后返回、内存被回收,紧接着 value 的局部 std::string 落在同一个栈地址上,导致 key 的绑定指针和 value 的绑定指针指向同一块内存。sqlite3_step 时两个字段读的是同一地址,于是 hash_key 字段显示成了 value 的内容或垃圾。这也是你上个 commit 加的那行 INFO("key is %, strKey is %, value is %", ...) 能在内存里打印出正确 key 的原因 —— 那时数据还没坏,坏在绑定之后。 - **修改内容:** 把nullptr改成做一次私有拷贝 ---- ## 2. 功能验证 - [ ] **功能自验** 测试6000+次问题未再复现 - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!412 | 5 天前 | |
[msprof-master]out分支同步到master分支 Co-authored-by: yu-liang-bin<y1416490440@163.com> | 7 个月前 | |
补充aicpu additional parser c化模块 Co-authored-by: Seanesmhxocism<617225691@qq.com> # message auto-generated for no-merge-commit merge: !387 merge cDev into master 补充aicpu additional parser c化模块 Created-by: Seanesmhxocism Commit-by: Seanesmhxocism Merged-by: ascend-robot Description: # PR 合入模板 **注:经过自检不涉及的可标注“不涉及”或直接打勾,特殊情况请文字备注。不符合规范的 PR 不允许合入,请(后备)commit 注意。** ---- ## 1. 修改描述 - **修改原因:** 适配解析框架整体c化。支持aicpu 数据解析c化能力。 - **修改内容:** 1、适配V6场景 streamInfo获取方式,增加相关数据在数据中心中存储。 2、适配streamInfo数据处理,区分HostStreamInfo和DeviceStreamInfo。 3、适配aicoreFreq数据导出流程对于SteamInfo模块依赖 4、增加aicpu parser及其parserItem类设计,增加二进制文件解析流程 5、增加AicpuPersistence aicpu数据持久类,分类aicpu原始数据并落盘于对应的数据db。 ---- ## 2. 功能验证 - [ ] **功能自验** 单timeline数据导出,整体收益在15%左右。 | aicpu大小 | python解析 | c化解析 | 收益 | |--|--|--|--| | 13MB | 8.676s | 7.515s | 15.4% | | 60MB | 40.494s | 35.240s | 14.9% | 已知问题:kfcInfo数据导出的role字段,目前没有转换为DST/SRC/RESERVED/INVALID_TYPE,由于目前role没有使用,暂时先不处理。后续重构删除role数据落盘 - [ ] **本地自验用例截图** - [ ] **冒烟是否通过** (填入群链接的自验证报告中,如未通过,请说明原因:____________________ ,功能代码请主动申报添加冒烟) ---- ## 3. 分支合并要求 - [ ] **代码合并**(请确保将 master 分支的最新代码同步合并至 poc 分支及 pre-research 分支,同时保证 poc 分支的代码也已正确合并到 pre-research 分支。) ---- ## 3. 代码检视 - **要求:** - 合入代码超过 200 行,需三人以上会议检视。 - 检视密度≥1个/100行。 - 检视缺陷密度未达要求需提供说明。 - 大于 1000 行代码原则上不允许合入,需进行备案。 - [ ] **是否经过代码检视** - [ ] **是否具备 UT 测试用例看护** (如不符合,请说明原因:____________________) - **检视意见数:____ 条** (请填写本次检视的意见总数,用于commit合入前审视) ---- ## 4. 安全自检 ### Python、C++ - [ ] **对外接口新增/删除/变更后,资料要同步新增/删除/变更,新增接口入参校验参考外部输入表格** - [ ] **不允许私有的文件操作,需要使用公共模块的安全函数** - [ ] **任务结束后需要删除临时文件,同时需要考虑任务失败后,临时文件没有残留** - [ ] **数组访问需要校验越界场景,对除法需要做除零校验** - [ ] **需要对递归方法做递归深度校验,正则表达式必须做 ReDoS 校验** - [ ] **需要充分进行接口输入和返回值异常情况的校验** - [ ] **日志打印不要出现拼写或语法错误,不要暴露代码细节和敏感信息** ### C++ - [ ] **指针使用前需要判空** - [ ] **数值计算校验溢出和反转** - [ ] **不可存在内存泄漏(异常场景需要释放内存)** - [ ] **类型转换不能出现数据截断** - [ ] **拷贝字符串时,目的缓冲区至少比源缓冲区大 1** - [ ] **拷贝内存时,目的缓冲区不小于源缓冲区** - [ ] **内存释放后指针赋值为 nullptr** ---- ## 5. 变更知会 - [ ] **资料修改** - [ ] **变更通知(消息知会 + 邮件知会)** ---- See merge request: Ascend/msprof!387 | 20 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 12 天前 | ||
| 1 小时前 | ||
| 5 天前 | ||
| 7 个月前 | ||
| 20 天前 |