Pull Request已成功合入, 合并人@CANN-robot
(感谢 liuyi424 的贡献)变更摘要
此 PR 修复了一个由缓存命中时 outPutShapeMap 中 aclTensor* 指针未同步更新引发的 coredump 问题。在 individual op 的 args 缓存复用场景下,原有逻辑仅更新了 kernel 使用的 TensorData 地址,但 outPutShapeMap 仍持有首次调用时创建的 aclTensor* 指针。当这些旧 tensor 已被释放或内存被复用时,后续的 SetStorageShape 操作会写入非法地址导致崩溃。本次修改在 NnopbaseUpdateOutputAddr 和 UpdateArgsIoAddr 两条缓存更新路径中新增 NnopbaseUpdateOutputShapeTensorMap 调用,确保 outPutShapeMap 中保存的 shape 依赖输出 tensor 指针指向当前有效地址,同时补充了 DFX 日志和回归测试。
主要改动
- 新增
NnopbaseUpdateOutputShapeTensorMap函数:在indv_update_tensor.cpp中实现,负责在缓存命中时将缓存的outPutShapeMap中的旧aclTensor*指针替换为当前调用传入的新 tensor 指针,并输出 DFX 日志记录旧/新 tensor 地址。 - 在
NnopbaseUpdateOutputAddr中同步刷新 shape tensor 映射:在该函数末尾调用NnopbaseUpdateOutputShapeTensorMap(dstTensors, tensors),覆盖旧缓存路径的 shape 回刷。 - 在
UpdateArgsIoAddr中同步刷新 shape tensor 映射:在该函数末尾调用NnopbaseUpdateOutputShapeTensorMap(dstTensors, tensors),覆盖 V2 缓存路径的 shape 回刷。 - 在
NnopbaseExecutorRefreshOutputShape中增加 DFX 日志:新增两条OP_LOGI日志,分别记录 output shape tensor 数量与缓存状态,以及每次 shape 回刷时的 tensor 指针、维度数和具体 shape 值。 - 新增回归测试
CacheHitUpdatesOutputShapeTensorMap:覆盖NnopbaseUpdateOutputAddr和UpdateArgsIoAddr两条路径,验证缓存命中后outPutShapeMap中的 tensor 指针已从首次调用创建的对象更新为当前调用的对象。


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.
For more, you also can visit HICANN.
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-cann/opbase | ✅ pengjiahao96, 宋恺 (2/2) | ✅ pengjiahao96 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
liuyi424, thanks for your pull request. All authors of the commits have signed the CLA. 👍


/lgtm
/approve


/lgtm


描述
individual op 的 args 缓存会保存 shape 依赖输出的
aclTensor *。后续调用命中缓存时,原逻辑只更新 kernel 使用的 TensorData 地址,没有更新outPutShapeMap,导致输出 shape 仍可能回刷到首次调用的 tensor;该 tensor 已释放或内存被复用时,会在SetStorageShape处发生 coredump。本次修改:
outPutShapeMap。关联的Issue
关联issue #309
测试
已通过冒烟测试
文档更新
无
类型标签