Pull Request已成功合入, 合并人@CANN-robot
(感谢 ren-botao 的贡献)变更摘要
此 PR 为算子执行框架新增 PCIE Through 功能相关的内部接口,主要目的是在检测到 tensor 地址位于 PCIE 地址范围时,跳过算子执行缓存(OpExecCache)的查找与写入,避免因 PCIE 通道数据变化导致缓存命中过期结果。变更涉及在 OpConfigInfo 中新增 usePcieAddr 标记字段、新增 op_feature_internal 模块提供 PCIE 地址检测能力,以及在算子缓存流程的关键路径上增加 PCIE 地址判断与缓存短路逻辑。
主要改动
-
新增
usePcieAddr字段到OpConfigInfo:在include/nnopbase/opdev/op_config.h中为OpConfigInfo结构体增加了bool usePcieAddr{false}成员,并在拷贝构造和赋值运算符中同步处理该字段,同时将reserved数组从 5 字节缩减为 4 字节以保持结构体大小不变。 -
新增
op_feature_internal模块声明与实现:新增src/nnopbase/common/inc/op_feature_internal.h头文件和src/nnopbase/common/utils/op_feature.cpp实现文件,提供InitPcieThroughInfo()、IsPcieThroughEnabled()、IsTensorAddrInPcieRange()三个内部接口。当前使用占位地址段(0x1~0x2)进行框架验证,真实地址段待后续弱符号接口接入后填充。 -
缓存初始化/重置时清零
usePcieAddr:在src/nnopbase/common/utils/op_cache.cpp的ResetCacheThreadLocal()、InitPTACacheThreadLocal()、InitExecutorCacheThreadLocal()三个函数中增加usePcieAddr = false的重置逻辑,确保每次线程局部缓存初始化时标记处于干净状态。 -
Tensor 地址登记时检测 PCIE 范围并置标记:在
AddTensorAddrToCachedList()和AddAclTensorToCachedList()中,当IsPcieThroughEnabled()为真且IsTensorAddrInPcieRange()判定地址命中时,将线程局部上下文的usePcieAddr置为true。 -
算子缓存查找与写入的 PCIE 短路逻辑:在
GetOpExecCache()(两个重载)中,若usePcieAddr为true则直接返回nullptr跳过缓存查找;在AddOpExecCache()中,若usePcieAddr为true则直接销毁传入的缓存对象并返回false,阻止 PCIE 场景下写入缓存。 -
在 L2 初始化流程中触发 PCIE 信息初始化:在
src/nnopbase/composite_op/aclnn_engine/op_executor.cpp的InitL2Phase1Context()函数开头调用op::internal::InitPcieThroughInfo(),确保在每次 L2 算子执行上下文的初始化阶段完成 PCIE Through 相关全局状态的std::call_once初始化。


Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| include | ✅ 王永光, 汤平川, 宋恺 (3/2) | ✅ 王永光 (1/1) |
| repo-cann/opbase | ✅ 汤平川, 宋恺 (2/2) | ✅ 汤平川, 宋恺 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
ren-botao, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/lgtm
/approve


/approve


/lgtm


/approve


描述
此 PR 为算子执行框架新增 PCIE Through 功能相关的内部接口,主要目的是在检测到 tensor 地址位于 PCIE 地址范围时,跳过算子执行缓存(OpExecCache)的查找与写入,避免因 PCIE 通道数据变化导致缓存命中过期结果。变更涉及在 OpConfigInfo 中新增 usePcieAddr 标记字段、新增 op_feature_internal 模块提供 PCIE 地址检测能力,以及在算子缓存流程的关键路径上增加 PCIE 地址判断与缓存短路逻辑。
关联的Issue
#312 nnopbase支持PCIe through
测试
冒烟看护
文档更新
类型标签