Pull Request已成功合入, 合并人@ascend-robot
(感谢 Dring 的贡献)变更摘要
此 PR 主要实现两个功能:(1) 在 IsSupportIpcEvent 中支持 64K 页大小,当驱动版本 ≥ 26.0.RC1 时跳过 4K 页检查,使 IPC Event 在 64K 页环境下可用;(2) 在 DriverVersionToNum 中新增对 HDK b-build 版本号(如 26.1.0.b083)的解析,确保 b-build < T < RC < 正式版本的正确排序。同时补充了对应的 C++ 单元测试和 Python 端到端 IPC 测试。
主要改动
IsSupportIpcEvent支持 64K 页大小: 在AclInterface.cpp中引入驱动版本判断,当驱动 ≥26.0.RC1时跳过_SC_PAGE_SIZE == 4096的硬性校验,并为所有调试消息追加页大小上下文字符串page_ctx,便于排查问题。DriverVersionToNum新增 b-build 版本解析: 在GetCANNInfo.cpp中增加对b前缀构建号(如b083)的解析分支,将其提取为patch值,并排除beta前缀的误匹配,使得 b-build < T < RC < 正式版本的数值排序正确。- 导出
DriverVersionToNum供测试使用: 在GetCANNInfo.h中为DriverVersionToNum添加TORCH_NPU_API导出声明,使 C++ 单元测试可直接调用该纯字符串解析函数。 - 新增 C++ 单元测试
DriverVersionTest.BBuildOrdering: 在test/cpp/api/modules.cpp中验证 b-build、T、RC、正式版本之间的数值大小关系,以及 b-build 内部构建号越大数值越大的排序规则。 - 新增 Python IPC 端到端测试: 新增
test/npu/test_ipc_pagesize.py,包含TestIpcEventPageSize(验证不同页大小下 IPC Event 的支持状态)和TestIpcTensorTransfer(跨进程 IPC Tensor 传输验证,含超时保护和子进程异常上报机制)。


代码审查
我已完成对全部 5 个变更文件的审查。以下是最终总结:
审查总结
| 优先级 | 数量 | 文件 |
|---|---|---|
| P1 | 1 | test/cpp/api/modules.cpp |
| P2 | 2 | torch_npu/csrc/core/npu/GetCANNInfo.cpp, test/npu/test_ipc_pagesize.py |
| P3 | 1 | test/npu/test_ipc_pagesize.py |
各文件审查结论
-
test/cpp/api/modules.cpp— ⚠️ 发现 1 个 P1 问题:BBuildOrdering测试用例使用了DriverVersionToNum不支持的版本字符串格式("26.1.0.T1"、"26.1.0.RC1" 返回 0),导致 7 个断言中有 3 个必定失败。 -
test/npu/test_ipc_pagesize.py— ⚠️ 发现 2 个问题:P2 — 64K 页面场景的test_page_size_branch无断言,测试不生效;P3 —p1.join()/p2.join()缺少超时,子进程挂死时 CI 会无限期阻塞。 -
torch_npu/csrc/core/npu/GetCANNInfo.cpp— ⚠️ 发现 1 个 P2 问题:b-build 版本解析分支未提取release字段,不同 release 号的 b-build 版本(如 "26.1.0.b083" vs "26.1.5.b083")会产生相同的数值。 -
torch_npu/csrc/core/npu/GetCANNInfo.h— ✅ 无问题(仅新增TORCH_NPU_API导出声明,正确)。 -
torch_npu/csrc/core/npu/interface/AclInterface.cpp— ✅ 无新增问题(page_ctx诊断信息附加逻辑正确,skip_page_size_check分支逻辑合理)。
整体风险评估
中高风险。主要风险来自测试用例中的 P1 断言失败 bug,以及 b-build 解析器潜在的版本碰撞问题(P2)。AclInterface.cpp 中的核心 64K 页面跳过逻辑本身是正确的,但配套测试覆盖不足(64K 分支无断言)。建议在合入前修复 P1 测试用例问题,并对 P2 的 release 字段处理添加注释或补充逻辑。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 1 |
| 🟡 建议 | 2 |
⛔ 需要修改




【合入来源】
【修改方案】
64k pagesize,新版本HDK已支持,去除4k校验限制。同时增加HDK b版本判断分支。
版本排序语义:b-build < T版本 < RC版本 < 正式release
验证:2702000083 < 2702000200 < 2702010000 → b083 < T1 < 正式版
【资料变更】
不涉及
【接口变更】
不涉及
【功能验证】
64k页机器 ut验证:


4k页机器 ut验证:
【CheckList】