| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: 新增aclrtBinaryEnumerateFunctions接口 Co-authored-by: chenyang<2082464740@qq.com> # message auto-generated for no-merge-commit merge: !4534 merge aclbef into master feat: 新增aclrtBinaryEnumerateFunctions接口 Created-by: weixin_51634168 Commit-by: chenyang Merged-by: cann-robot Description: # feat: 新增aclrtBinaryEnumerateFunctions接口 ## 描述 新增“枚举二进制模块中核函数句柄”能力,包含 RT 内部接口 rtBinaryEnumerateFunctions 及 ACL 对外封装 aclrtBinaryEnumerateFunctions。行为对齐 CUDA cuModuleEnumerateFunctions:按 Program::kernelNameMap_ 存储顺序返回句柄,实际填入个数为 min(numFunctions, 模块内函数数);numFunctions 为 0 时不写入任何句柄,接口直接返回成功。 **RT 层:** - 接口声明位于 src/inc/runtime/inner_kernel.h(非仓间接口);C 层入口 src/runtime/api/api_c_standard_soc.cc 负责句柄解包,经 InitEmbeddedInnerHandle/ExportEmbeddedHandle 导出 rtFuncHandle;api_c_tiny_stub.cc 打桩返回不支持 - Api 分层链路逐层转发:api_error.cc 做空指针校验(binHandle/funcHandles/actualCount),api_decorator.cc 透传;本接口不做 profiling 打点 - ApiImpl::BinaryEnumerateFunctions 按职责拆分为两个私有接口: - PrepareProgramForEnumerate:非 XPU 平台经 Program::CopySoAndNameToCurrentDevice 将二进制及名称按设备惰性拷贝下发(每设备仅一次);XPU 平台不拷贝,仅取 device id - CollectEnumerateKernels:遍历 kernelNameMap_ 收集句柄,按 min(numFunctions, 实际函数数) 预留并截断;XPU 下逐 kernel 设置 literal name 设备地址 **ACL 层:** - 新增对外接口 aclError aclrtBinaryEnumerateFunctions(const aclrtBinHandle binHandle, aclrtFuncHandle* funcHandles, uint32_t numFunctions)(include/external/acl/acl_rt.h),经 ACL_RT_FUNC_MAP 宏机制生成公开符号;aclrtBinaryEnumerateFunctionsImpl 空指针校验后透传 RT 层,底层错误码(含平台不支持)直接回传 **文档与示例:** - 补充 docs/zh/api_ref/14_kerne_loading_and_execution.md 接口文档(含 min 语义及 numFunctions=0 行为说明) - 新增上机示例 example/2_advanced_features/kernel/2_binary_enumerate_functions/:将 add_custom/sub_custom/mul_custom 三个 AscendC Kernel(kernel/custom.cpp)编译为同一个独立算子二进制,演示完整使用链路——aclrtBinaryLoadFromFile Host 侧加载解析;首次调用 aclrtBinaryEnumerateFunctions 触发二进制到当前 Context 对应 Device 的拷贝,并枚举出 3 个核函数句柄;再用 aclrtGetFunctionName/aclrtGetFunctionAddr 查询函数名与 Device 代码地址、aclrtBinaryGetDevAddress 打印二进制 Device 地址;最后通过 aclrtLaunchKernelWithHostArgs 分别下发三个 Kernel 并校验 FP16 计算结果。配套 CMakeLists.txt、run.sh 一键编译运行脚本及中英文 README。 **example测试结果:** text [INFO] Enumerating functions and copying the binary from Host to Device [INFO] Binary copied to Device: address=0x124000001000, size=7828 bytes [INFO] function[0]: name=add_custom, handle=0xaaab14b41798, aic=(nil), aiv=0x124000001000 [INFO] function[1]: name=mul_custom, handle=0xaaab14b41cc8, aic=(nil), aiv=0x124000001a30 [INFO] function[2]: name=sub_custom, handle=0xaaab14b421f8, aic=(nil), aiv=0x124000002460 [INFO] add_custom result verified [INFO] sub_custom result verified [INFO] mul_custom result verified [SUCCESS] aclrtBinaryEnumerateFunctions sample passed ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. bash build.sh 编译通过 2. 新增 UT 全量通过:tests/ut/runtime/runtime/test/platform/910B/rt_utest_api_kernel.cc 中 BinaryEnumerateFunctions 相关用例(成功、空 binHandle、参数校验、numFunctions 小于/大于实际个数、空 program、拷贝下发失败、decorator 转发、numFunctions=0),tests/ut/acl/testcase/acl_runtime_unittest.cpp 中 ACL 层用例;tests/depends 打桩已同步 3. 示例 example/2_advanced_features/kernel/2_binary_enumerate_functions/main.cpp 上机验证枚举与 kernel launch ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无 See merge request: cann/runtime!4534 | 16 天前 | |
【PR】: rtGetBinBuffer rtGetExceptionRegInfo 迁移至仓间接口 Co-authored-by: Leon0930<lili233@huawei.com> # message auto-generated for no-merge-commit merge: !4385 merge cangjian-iterface into master 【PR】: rtGetBinBuffer rtGetExceptionRegInfo 迁移至仓间接口 Created-by: Leon0930 Commit-by: Leon0930 Merged-by: cann-robot Description: # Pull Request ## 描述 rtGetBinBuffer rtGetExceptionRegInfo 迁移至仓间接口 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无 ## 如何测试 rdv车无问题 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 需周边代码先合入,确保周边仓编译通过 See merge request: cann/runtime!4385 | 19 天前 | |
feat: 无 AICPU 核场景下适配 aicpu_cust 双 worker 调度 Co-authored-by: pan-tong<pantong@huawei.com> # message auto-generated for no-merge-commit merge: !4403 merge feat/aicpu-cust-no-aicpu-two-workers into master feat: 无 AICPU 核场景下适配 aicpu_cust 双 worker 调度 Created-by: pan-tong Commit-by: pan-tong Merged-by: cann-robot Description: # Pull Request ## 描述 参考 PR #2721 的无 AICPU 核调度方案,仅补齐 aicpu_cust 进程所需适配: - 无 AICPU 核时创建 2 个 custom worker,分别绑定最大的两个 CTRLCPU 核; - 无 AICPU 核时事件调度组使用 GRP_TYPE_BIND_CP_CPU; - 无 AICPU 核且 CTRLCPU 信息查询失败时终止初始化; - monitor 与 datadump 按实际 worker 数初始化资源。 ## 变更类型 - [x] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #887 ## 如何测试 1. pre-commit run clang-format --files <modified files>:通过。 2. bash tests/build_ut.sh -u aicpusd -t aicpu_aicpuschedule_utest:标准 aicpu 调度 1471 项通过。 3. bash tests/build_ut.sh -u aicpusd -t aicpu_custom_schedule_utest:aicpu_cust 调度 273 项通过;无核双 worker 成功路径验证两个 worker 均进入 THREAD_RUNNING。 4. bash tests/build_ut.sh -u aicpusd -c -t aicpu_custom_schedule_utest:新增生产代码可执行行覆盖率 90.0%(72/80),未命中行为仅为内存分配异常 catch。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 不修改标准 aicpu 实现,不引入 TSD 调度方式、vDevice、MSGQ 或事件消费时序等扩展改动。当前仅完成本地 UT 与覆盖率验证,未进行真实无 AICPU 硬件形态功能验证。 See merge request: cann/runtime!4403 | 16 天前 | |
fix: tests目录下log、trace模块代码格式化 (#871) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4478 merge fix-issue-871 into master fix: tests目录下log、trace模块代码格式化 (#871) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 修复摘要: 本 PR 是 https://gitcode.com/cann/runtime/issues/840 的 tests 目录补充,按 runtime 仓 pre-commit / clang-format 规范整改 tests 下 log、trace 相关 UT 代码格式。 - 变更范围按 /mnt/workspace/.cann_fix/runtime_issue_871_20260825154051/cann-fix-plan.md 的候选修改点汇总,不在 PR 描述中逐文件展开: - tests/ut/atrace - awatchdog - cpu_detect - trace_server - utrace - stub - tests/ut/slog - alog - common - ep - iam - rc - slog - stub - 文件级清单以计划/执行产物 cann-fix-code.md 和 PR Files changed 为准,PR 描述不展开完整清单,避免描述过长。 - Diff 内容不逐文件展示,本次主体为格式化整改,包含 clang-format 结果和 CRLF 到 LF 的行尾统一,无业务逻辑变更。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/871 ## 如何测试 - 测试结论: 格式化检查 PASS;本次只做格式整改,无业务逻辑变更,未单独运行业务 UT。 - pre-commit run --files $(git diff --name-only HEAD~1..HEAD): PASS - git diff --check HEAD~1..HEAD: PASS - cann-fix-test.md: PASS,Problems 为 (none) ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无。 ## 风险和遗留问题 - 无已知遗留问题。 See merge request: cann/runtime!4478 | 18 天前 | |
fix: 修复ErrorManager的并发缺陷(error_map_数据竞争 + is_init_/error_mode_锁外读写)(#842) Co-authored-by: KenChow<zhouchen53@huawei.com> # message auto-generated for no-merge-commit merge: !4364 merge fix_errmgr_thread_safety into master fix: 修复ErrorManager的并发缺陷(error_map_数据竞争 + is_init_/error_mode_锁外读写)(#842) Created-by: KenChow Commit-by: KenChow Merged-by: cann-robot Description: # Pull Request ## 描述 修复 ErrorManager 单例的三类并发缺陷。ErrorManager 以 GetInstance() 单例形式对外暴露 Init/Report* 接口,未声明需要调用方自行同步,但实现中 mutex_ 只保护了消息容器,未覆盖 error_map_/is_init_/error_mode_ 的全部访问点。 **缺陷 1:error_map_ 无锁读写(最严重,可崩溃)** 公开接口 ParseJsonFormatString 全程不持锁改写 error_map_,而它经由 RegisterFormatErrorMessage 在运行期可被任意线程调用;同时 ReportErrMessage 在锁外执行 error_map_.find,并把指向 map 内部的引用 error_info 带出锁一直用到组装 ErrorItem。 - find 与 emplace 并发会读到红黑树的调整中间态; - 高优先级注册路径的 it->second = error_info 会原地覆写正被读取的 std::string,可导致段错误。 IsUserDefinedErrorCode 同样在锁外读 error_map_。 **缺陷 2:is_init_ 先检查后初始化不是原子操作** 7 处上报接口在锁外读裸 bool 的 is_init_ 后各自调 Init(),多个线程可同时读到 false 并各自完整跑一遍 ParseJsonFile,造成重复解析 JSON。 **缺陷 3:error_mode_ 在锁外写** Init(mode) 在进入 Init(path) 的临界区之前就写裸 enum 的 error_mode_,与容器路由处的读之间没有 happens-before,构成数据竞争。且该写发生在校验解析结果之前,一次失败的 Init 会把错误消息粒度模式永久改成实际未生效的值。 **修改内容** 针对缺陷 1(error_map_ 无锁读写): - ParseJsonFormatString 内部改为持 mutex_ 后再改写 error_map_;相应地 Init(path) 不再自己持锁,锁下沉到真正操作 error_map_ 的位置,顺带把文件读取移出临界区,也避免了递归加锁; - ReportErrMessage 持锁查找并把 ErrorInfoConfig 整体拷贝出来,出锁之后只使用副本,不再把指向表内部的引用带出锁; - IsUserDefinedErrorCode 持锁读 error_map_。 针对缺陷 2(is_init_ 先检查后初始化不是原子操作): - is_init_ 改为原子变量,读写使用 acquire/release 语义; - 新增 init_mutex_ 与 EnsureInitialized(),用双重检查加锁把 7 处懒初始化收敛到一处,各调用点原有的返回值语义保持不变;加锁顺序固定为 init_mutex_ 在前、mutex_ 在后。 针对缺陷 3(error_mode_ 在锁外写): - error_mode_ 改为原子变量,读写使用 acquire/release 语义; - Init(mode) 改为配置解析成功之后才写入模式,解析失败不再污染模式。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/842 ## 如何测试 ### 单元测试 tests/ut/error_manager/testcase/error_manager_unittest.cc 新增 3 个用例: 1. ConcurrentRegisterAndReportErrMessage —— 一个线程持续调用 RegisterFormatErrorMessage 注册新错误码触发 error_map_ 插入,另一线程并发调用 ReportErrMessage,校验并发写入过程中不丢失任何已注册模板。 2. InitWithModeNotPolluteModeOnFailure —— 校验 Init(mode) 在非法模式和配置解析失败两种场景下都不改写 error_mode_。 3. ConcurrentLazyInitFromMultipleThreads —— 未初始化状态下 8 线程并发上报,覆盖 is_init_ 先检查后初始化的竞争。 执行方式: bash tests/build_ut.sh -u error_manager 需要说明两点:用例 2 在普通构建下就能拦截回归,因为测试程序同级目录没有 conf/error_manager/error_code.json,Init 必然失败,修复前会因模式被污染而用例失败;用例 1 和用例 3 覆盖的是数据竞争,普通构建下不会让用例失败,需要开启 ThreadSanitizer 编译才具备检出能力。经实测,AddressSanitizer 对这两处竞争检不出来。 ### 端到端验证 三个缺陷各有一个独立用例,只调用对外接口,不依赖任何检测工具,修复前后结果对比明确。 **验证一(对应缺陷 1):并发注册错误码不丢失、不崩溃** 并发注册在现网是真实存在的:注册宏依托静态变量初始化,动态加载算子包或插件时就会执行;注册接口还通过 runtime_keeper 传给了驱动,可能由驱动线程回调。因此"一个线程注册、另一个线程上报"并非构造出来的极端场景。 构造方法:4 个线程各注册 6 万个互不重复的错误码,全部结束后由单线程逐个上报,检查每个注册过的错误码都能查到。判定标准是查不到的数量为 0,且进程没有异常退出。 修复前:连续 8 轮,其中 7 轮出现错误码丢失(每轮丢 1 到 4 个),1 轮进程段错误退出。 修复后:连续 8 轮全部通过,无丢失、无崩溃。 规模会影响复现概率:注册总量 8000 时约一半轮次能复现,24 万时 8 轮全部复现。建议按 24 万规模、重复 3 轮以上执行。 **验证二(对应缺陷 2):首次并发上报只解析一次配置文件** 构造方法:进程启动后先注册若干模板但不触发初始化,然后 N 个线程同时首次上报,各自触发懒初始化,测量这一批上报的总耗时。修复前每个线程都会完整解析一遍 error_code.json(实测文件 119 KB),耗时随线程数线性增长;修复后只解析一次,耗时与线程数无关。判定标准是耗时不随线程数增长。 同一台机器实测: | 线程数 | 修复前 | 修复后 | | --- | --- | --- | | 4 | 14 毫秒 | 4 毫秒 | | 8 | 28 毫秒 | 3 毫秒 | | 16 | 56 毫秒 | 3 毫秒 | | 32 | 111 毫秒 | 4 毫秒 | 修复前耗时正比于线程数,正是重复解析配置文件的直接证据;修复后稳定在 3 到 4 毫秒。 **验证三(对应缺陷 3):初始化失败后,错误消息记录粒度不被改变** 构造方法:先正常上报一次错误,让错误管理器完成初始化;把动态库所在目录上一层的 conf/error_manager/error_code.json 临时改名,让配置解析失败;调用 ErrMgrInit 设置为进程粒度,确认返回失败;恢复文件;起两个线程各上报一条不同的错误码,各自取回错误消息。判定标准是每个线程只能看到自己上报的那条。 修复前:接口返回失败,但粒度已被改成进程级,两个线程共用同一个消息容器,一个线程取回了两条消息(包含另一个线程的报错,且带有进程粒度特有的线程号后缀),另一个线程取回为空。连续 5 次全部失败。 修复后:两个线程各取各的,互不干扰,连续 5 次全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 已核对全部 12 个持 mutex_ 的函数,确认修改后不存在嵌套加锁;EnsureInitialized 的 init_mutex_ 与 mutex_ 加锁顺序单向,无死锁风险。 See merge request: cann/runtime!4364 | 19 天前 | |
feat: update .pre-commit-config.yaml for mmpa & error_manager Co-authored-by: likun104<likun104@h-partners.com> # message auto-generated for no-merge-commit merge: !3771 merge br_update_pre-commit-config.yaml into master feat: update .pre-commit-config.yaml for mmpa & error_manager Created-by: likun104 Commit-by: likun104 Merged-by: cann-robot Description: # Pull Request ## 描述 为mmpa & error_manager更新“.pre-commit-config.yaml”文件中的配置 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 流水线跑通过 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!3771 | 1 个月前 | |
【Profiling】支持单算子调优配置block开关 Co-authored-by: chenminghao11<chenminghao11@hisilicon.com> # message auto-generated for no-merge-commit merge: !4502 merge compute into master 【Profiling】支持单算子调优配置block开关 Created-by: chenminghao11 Commit-by: chenminghao11 Merged-by: cann-robot Description: # Pull Request ## 描述 请清晰准确地描述本次 Pull Request 的意图和变更内容。 支持单算子调优配置block开关 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4502 | 16 天前 | |
【PR】: Platform支持kirin在研版本 Co-authored-by: zengjuan<zengjuan2@huawei.com> # message auto-generated for no-merge-commit merge: !4150 merge master into master 【PR】: Platform支持kirin在研版本 Created-by: zengjuan Commit-by: zengjuan Merged-by: cann-robot Description: # Pull Request ## 描述 Platform支持kirin在研版本,完成turing obp算子冒烟测试  ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1.编译正常 2.门禁正常 ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!4150 | 18 天前 | |
fix: 修复 aicpu_sched 模块日志及 UT 代码中的拼写/语法错误 Co-authored-by: liu-lu<www.liulu824910939@qq.com> # message auto-generated for no-merge-commit merge: !4431 merge master into master fix: 修复 aicpu_sched 模块日志及 UT 代码中的拼写/语法错误 Created-by: liu-lu Commit-by: liu-lu Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 修复了 aicpu_sched 模块及 UT 测试代码中多处日志信息的拼写错误、语法错误和格式化字符串类型不匹配问题,具体包括: 1. 修复日志中 "is consistence" -> "is not consistent"(2处) 2. 修复日志中 "is not invalid" -> "is invalid"(双重否定修正) 3. 修复日志中 "is setted" -> "is set"(2处,set 的过去分词错误) 4. 修复日志中 "heterogeneo1us" -> "heterogeneous"(拼写错误,混入数字1) 5. 修复日志中 "return not ok return not ok" -> "return not ok"(重复文字删除) 6. 修复格式化字符串 %d -> %zu(匹配 size_t 类型,消除编译告警) 7. 修复 UT 代码中 "Pip" -> "Pipe"、"creat" -> "create" 拼写错误 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue [851](https://gitcode.com/cann/runtime/issues/851) ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译构建测试:执行全量编译,确认无新增编译告警/错误 2. UT 测试:运行 tests/ut/queue_schedule 和 tests/ut/tsd/basic_component/package_manager 下的 UT 用例,确认全部通过 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 所有变更仅涉及日志字符串和注释文字的拼写/语法修正,不影响任何功能逻辑。其中 main.cpp 中 %d -> %zu 的修改消除了 size_t 类型的格式化字符串不匹配告警。 See merge request: cann/runtime!4431 | 16 天前 | |
feat: 新增aclrtBinaryEnumerateFunctions接口 Co-authored-by: chenyang<2082464740@qq.com> # message auto-generated for no-merge-commit merge: !4534 merge aclbef into master feat: 新增aclrtBinaryEnumerateFunctions接口 Created-by: weixin_51634168 Commit-by: chenyang Merged-by: cann-robot Description: # feat: 新增aclrtBinaryEnumerateFunctions接口 ## 描述 新增“枚举二进制模块中核函数句柄”能力,包含 RT 内部接口 rtBinaryEnumerateFunctions 及 ACL 对外封装 aclrtBinaryEnumerateFunctions。行为对齐 CUDA cuModuleEnumerateFunctions:按 Program::kernelNameMap_ 存储顺序返回句柄,实际填入个数为 min(numFunctions, 模块内函数数);numFunctions 为 0 时不写入任何句柄,接口直接返回成功。 **RT 层:** - 接口声明位于 src/inc/runtime/inner_kernel.h(非仓间接口);C 层入口 src/runtime/api/api_c_standard_soc.cc 负责句柄解包,经 InitEmbeddedInnerHandle/ExportEmbeddedHandle 导出 rtFuncHandle;api_c_tiny_stub.cc 打桩返回不支持 - Api 分层链路逐层转发:api_error.cc 做空指针校验(binHandle/funcHandles/actualCount),api_decorator.cc 透传;本接口不做 profiling 打点 - ApiImpl::BinaryEnumerateFunctions 按职责拆分为两个私有接口: - PrepareProgramForEnumerate:非 XPU 平台经 Program::CopySoAndNameToCurrentDevice 将二进制及名称按设备惰性拷贝下发(每设备仅一次);XPU 平台不拷贝,仅取 device id - CollectEnumerateKernels:遍历 kernelNameMap_ 收集句柄,按 min(numFunctions, 实际函数数) 预留并截断;XPU 下逐 kernel 设置 literal name 设备地址 **ACL 层:** - 新增对外接口 aclError aclrtBinaryEnumerateFunctions(const aclrtBinHandle binHandle, aclrtFuncHandle* funcHandles, uint32_t numFunctions)(include/external/acl/acl_rt.h),经 ACL_RT_FUNC_MAP 宏机制生成公开符号;aclrtBinaryEnumerateFunctionsImpl 空指针校验后透传 RT 层,底层错误码(含平台不支持)直接回传 **文档与示例:** - 补充 docs/zh/api_ref/14_kerne_loading_and_execution.md 接口文档(含 min 语义及 numFunctions=0 行为说明) - 新增上机示例 example/2_advanced_features/kernel/2_binary_enumerate_functions/:将 add_custom/sub_custom/mul_custom 三个 AscendC Kernel(kernel/custom.cpp)编译为同一个独立算子二进制,演示完整使用链路——aclrtBinaryLoadFromFile Host 侧加载解析;首次调用 aclrtBinaryEnumerateFunctions 触发二进制到当前 Context 对应 Device 的拷贝,并枚举出 3 个核函数句柄;再用 aclrtGetFunctionName/aclrtGetFunctionAddr 查询函数名与 Device 代码地址、aclrtBinaryGetDevAddress 打印二进制 Device 地址;最后通过 aclrtLaunchKernelWithHostArgs 分别下发三个 Kernel 并校验 FP16 计算结果。配套 CMakeLists.txt、run.sh 一键编译运行脚本及中英文 README。 **example测试结果:** text [INFO] Enumerating functions and copying the binary from Host to Device [INFO] Binary copied to Device: address=0x124000001000, size=7828 bytes [INFO] function[0]: name=add_custom, handle=0xaaab14b41798, aic=(nil), aiv=0x124000001000 [INFO] function[1]: name=mul_custom, handle=0xaaab14b41cc8, aic=(nil), aiv=0x124000001a30 [INFO] function[2]: name=sub_custom, handle=0xaaab14b421f8, aic=(nil), aiv=0x124000002460 [INFO] add_custom result verified [INFO] sub_custom result verified [INFO] mul_custom result verified [SUCCESS] aclrtBinaryEnumerateFunctions sample passed ## 变更类型 - [x] ✨ 新功能 ## 关联的Issue ## 如何测试 1. bash build.sh 编译通过 2. 新增 UT 全量通过:tests/ut/runtime/runtime/test/platform/910B/rt_utest_api_kernel.cc 中 BinaryEnumerateFunctions 相关用例(成功、空 binHandle、参数校验、numFunctions 小于/大于实际个数、空 program、拷贝下发失败、decorator 转发、numFunctions=0),tests/ut/acl/testcase/acl_runtime_unittest.cpp 中 ACL 层用例;tests/depends 打桩已同步 3. 示例 example/2_advanced_features/kernel/2_binary_enumerate_functions/main.cpp 上机验证枚举与 kernel launch ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 无 See merge request: cann/runtime!4534 | 16 天前 | |
fix: avoid closing slog socket from SIGPIPE handler (#848) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4446 merge fix-issue-848-dlog-sigpipe into master fix: avoid closing slog socket from SIGPIPE handler (#848) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 修复摘要: 使用费马实验室的FCT工具,扫描出来的并发问题如下 - 变更文件: - src/dfx/log/liblog/slog/dlog_communication/dlog_socket.c - src/dfx/log/liblog/slog/dlog_core.c - tests/ut/slog/ut/slog/testcase/dlog_coverage_utest.cc ### Diff 摘要 text src/dfx/log/liblog/slog/dlog_communication/dlog_socket.c | 1 - src/dfx/log/liblog/slog/dlog_core.c | 4 +++- tests/ut/slog/ut/slog/testcase/dlog_coverage_utest.cc | 6 ++++-- 3 files changed, 7 insertions(+), 4 deletions(-) ## 变更类型 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 关联的Issue https://gitcode.com/cann/runtime/issues/848 ## 如何测试 - 测试结论: PASS - 检测到代码变更文件 3 个: src/dfx/log/liblog/slog/dlog_communication/dlog_socket.c, src/dfx/log/liblog/slog/dlog_core.c, tests/ut/slog/ut/slog/testcase/dlog_coverage_utest.cc - 测试日志包含通过信号 - 测试日志覆盖计划测试项 5 条 ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 ## 风险和遗留问题 - (none) ## SIGPIPE 与 fd 生命周期说明 - SIGPIPE 的用途是处理 socket 对端关闭场景,避免默认动作终止业务进程;本 PR 将 SIGPIPE 设为 SIG_IGN,让写调用返回错误并回到普通线程路径处理。 - fd 仍会回收:FullWrites() 返回失败后,DlogWriteToSocket() 会调用 CloseLogInternal(),关闭当前 fd,并将 g_logFd 置为 INVALID、g_connectFlag 置为 FALSE;后续写日志会按原逻辑重新建链。 - 并发影响:修复前 SigPipeHandler() 可能异步打断持有 SlogLock() 的写线程并关闭同一个 fd;修复后 fd 关闭动作回到 SlogLock() 保护下的普通写失败路径,避免 handler 与写线程竞争 fd,也避免 handler 内加锁造成自死锁。 - 残余风险:当前仍沿用原有“写前临时修改进程级 SIGPIPE action、写后恢复”的模式;更彻底的后续优化可评估 send(..., MSG_NOSIGNAL) 等按调用抑制 SIGPIPE 的方式,但这会扩大 ToolWrite() 抽象和平台兼容性改动范围。 See merge request: cann/runtime!4446 | 16 天前 | |
fix: 修复 aicpu_sched 模块日志及 UT 代码中的拼写/语法错误 Co-authored-by: liu-lu<www.liulu824910939@qq.com> # message auto-generated for no-merge-commit merge: !4431 merge master into master fix: 修复 aicpu_sched 模块日志及 UT 代码中的拼写/语法错误 Created-by: liu-lu Commit-by: liu-lu Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 修复了 aicpu_sched 模块及 UT 测试代码中多处日志信息的拼写错误、语法错误和格式化字符串类型不匹配问题,具体包括: 1. 修复日志中 "is consistence" -> "is not consistent"(2处) 2. 修复日志中 "is not invalid" -> "is invalid"(双重否定修正) 3. 修复日志中 "is setted" -> "is set"(2处,set 的过去分词错误) 4. 修复日志中 "heterogeneo1us" -> "heterogeneous"(拼写错误,混入数字1) 5. 修复日志中 "return not ok return not ok" -> "return not ok"(重复文字删除) 6. 修复格式化字符串 %d -> %zu(匹配 size_t 类型,消除编译告警) 7. 修复 UT 代码中 "Pip" -> "Pipe"、"creat" -> "create" 拼写错误 ## 变更类型 请选择本次引入的变更类型: - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue [851](https://gitcode.com/cann/runtime/issues/851) ## 如何测试 描述测试此变更的步骤和前提条件: 1. 编译构建测试:执行全量编译,确认无新增编译告警/错误 2. UT 测试:运行 tests/ut/queue_schedule 和 tests/ut/tsd/basic_component/package_manager 下的 UT 用例,确认全部通过 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 所有变更仅涉及日志字符串和注释文字的拼写/语法修正,不影响任何功能逻辑。其中 main.cpp 中 %d -> %zu 的修改消除了 size_t 类型的格式化字符串不匹配告警。 See merge request: cann/runtime!4431 | 16 天前 | |
【PR】: 支持回调方式将plog日志原始内容输出给用户使用 Co-authored-by: newstarzj<zhangjie230@huawei.com> # message auto-generated for no-merge-commit merge: !2555 merge master_plog_callback into master 【PR】: 支持回调方式将plog日志原始内容输出给用户使用 Created-by: newstarzj Commit-by: newstarzj Merged-by: cann-robot Description: # Pull Request ## 描述 支持回调方式将plog日志原始内容输出给用户使用 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/563 ## 如何测试 UT ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/runtime!2555 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 16 天前 | ||
| 19 天前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 19 天前 | ||
| 1 个月前 | ||
| 16 天前 | ||
| 18 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 16 天前 | ||
| 3 个月前 |