已合并
[v2.7.1][feature][bugfix]support IPC 64k and HDK xx.xx.xx.b version #41875
Dring创建于 7月16日
[v2.7.1][feature][bugfix]support IPC 64k and HDK xx.xx.xx.b version #41875
已合并
Dring创建于 7月16日
Dring
7月16日

【合入来源】

如有社区issue,请关联issue链接
请勿携带内部流程信息(需求链接、问题单、内部issue等)
https://gitcode.com/Ascend/pytorch/issues/2919

  • [✓ ] 需求
  • [✕ ] 问题单
  • [✕ ] issue/工单
  • [✕ ] 重构优化
  • [✕ ] 资料更新

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
如果是需求或者重构类的PR,需要补充详细设计文档(说明上下游组件关系、时序图、类图、DFX能力等内容)

64k pagesize,新版本HDK已支持,去除4k校验限制。同时增加HDK b版本判断分支。
版本排序语义:b-build < T版本 < RC版本 < 正式release

版本 release 关键项 数值
26.1.0 0 (0+1)*10000 2702010000
26.1.0.T1 -1 (1+1)*100 2702000200
26.1.0.b083 -1(不设) +83(patch) 2702000083

验证:2702000083 < 2702000200 < 2702010000 → b083 < T1 < 正式版

【资料变更】

请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写“不涉及”

不涉及

【接口变更】

请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写“不涉及”

不涉及

【功能验证】

说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤
新增/变更内容是否已新增/适配UT测试用例看护,并补充测试自验证截图

64k页机器 ut验证:
image.png
4k页机器 ut验证:
image.png

【CheckList】

PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]

  • [✓ ] 代码注释完备,正确记录错误日志
  • [✕ ] 代码实现进行了返回值、空指针等校验
  • [ ✓] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等
  • [✓ ] PR持续集成流水线(CI)执行通过,代码检查无异常
likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Dring 的贡献)
DDring
7月16日 创建了 pull request,commit e2b04cfe
atomgit-bot
atomgit-bot
7月16日 评论:

变更摘要

此 PR 主要围绕两项特性合入:一是支持 64K 大页情况下的 IPC Event 功能,通过驱动版本判断跳过 4K 页面大小的硬性限制;二是扩展 DriverVersionToNum 解析能力,支持 HDK 的 b 构建版本号(如 26.1.0.b083),并确保版本排序正确(b-build < T < RC < 正式版)。同时新增了对应的单元测试以守护这两项变更。

主要改动

  • IsSupportIpcEvent 支持 64K 页面大小: 当驱动版本 ≥ 26.0.RC1 时,跳过原有的 4K 页面大小强制校验,使得 64K 页面环境下也可通过后续 ACL API 存在性检查来判定是否支持 IPC Event;同时在各分支的 dbg_msg 中追加页面大小上下文信息(page_ctx),便于问题定位。

  • DriverVersionToNum 新增 b-build 版本号解析: 在 GetCANNInfo.cpp 中新增对 b 前缀构建号(非 beta)的解析逻辑,将 b083 等后缀提取为 patch 数值,使得 b-build 版本在数值比较中位于 T 版本之下、RC 版本之下、正式版之下,符合预期的版本排序语义。

  • 导出 DriverVersionToNum 供测试使用: 在 GetCANNInfo.h 中为 DriverVersionToNum 添加 TORCH_NPU_API 导出声明,使其可被外部单元测试调用。

  • 新增 b-build 版本排序单元测试: 在 test/cpp/api/modules.cpp 中添加 DriverVersionTest.BBuildOrdering 测试用例,验证 DriverVersionToNum 对 b-build、T、RC、正式版之间的数值大小关系,以及对不同 b-build 构建号内部的比较。

  • 新增 IPC 页面大小及跨进程传输集成测试: 在 test/npu/test_ipc_pagesize.py 中添加两类测试——TestIpcEventPageSize 验证不同页面大小下 IPC Event 的创建行为(不崩溃且正确回退),TestIpcTensorTransfer 通过多进程队列完成跨进程 IPC 张量传输的端到端验证,并加入超时与异常捕获机制防止 CI 挂死。

likedislike
atomgit-bot
atomgit-bot
7月16日 评论:

代码审查

审查总结

我已完成对全部 5 个变更文件的审查。以逐文件结论汇总如下:

文件 发现问题
torch_npu/csrc/core/npu/GetCANNInfo.cpp P1: b-build 解析分支未提取 release 导致版本号信息丢失
test/cpp/api/modules.cpp P2: 测试用例使用了 DriverVersionToNum 无法解析的 4 段式版本格式字符串
torch_npu/csrc/core/npu/GetCANNInfo.h 无问题(导出声明正确)
torch_npu/csrc/core/npu/interface/AclInterface.cpp 无问题(page_ctx 注入与条件跳过逻辑正确)
test/npu/test_ipc_pagesize.py 无问题(多进程 IPC 测试设计合理,错误传播路径完整)
  • P1: 1 项
  • P2: 1 项
  • P3: 0 项

整体风险评估: 中等。P1 问题(release 丢失)在 b-build 版本号第三段数字不为 0 时会触发版本号比较逻辑错误,属于正确性缺陷。P2 问题会导致新增的单元测试无法通过。两项问题均可在合入前修复,无构建崩溃或数据损坏风险。

类型 数量
🔴 阻塞 1
🟡 建议 1

⛔ 需要修改

likedislike
ascend-robotascend-robot成员
7月16日 添加了label:ascend-cla/yes
此处折叠了85条消息 查看更多
ascend-robotascend-robot成员
7月20日 删除了label:ci-pipeline-passed
ascend-robotascend-robot成员
7月20日 合入了pull request
DDring
7月20日 修改了pull request 的描述
ascend-robot
ascend-robot成员
7月20日 评论:
流水线 pytorch_gitcode_PR_multiVersion#12832 [ commitID:82fd79dd ] 已完成
likedislike
DDring
26 天前 修改了pull request 的描述