已合并
修复topkv2算子的oom问题 #3960
cy_hw创建于 7月9日
修复topkv2算子的oom问题 #3960
已合并
Pull Request已成功合入, 合并人@CANN-robot
(感谢 cy_hw 的贡献)atomgit-bot
7月9日 评论:
7月9日 评论:
变更摘要
此 PR 修复了 topkv2 算子在 Arch35 架构上的 OOM(内存溢出)问题。核心改动位于 ComputeWorkSpace 函数中 outValueDbWKSize 工作空间大小的计算逻辑:将 topkV2DataInfo::CONST_2 的乘法从 CeilAlign 对齐操作之前移至对齐操作之后,确保先对基础数据大小进行对齐,再乘以常量 2,从而得到正确的工作空间尺寸,避免因计算偏差导致的内存分配异常。
主要改动
- 调整
outValueDbWKSize计算顺序: 将* topkV2DataInfo::CONST_2从CeilAlign之前的乘积表达式中移除,改为在CeilAlign对齐完成后再执行outValueDbWKSize *= topkV2DataInfo::CONST_2,确保对齐粒度不受常量倍乘干扰,得到预期的工作空间大小。 - 工作空间对齐与倍乘解耦: 原有的
sortTileInfo.sortAxisNum * sortTileInfo.unsortedDimParallel * sortTileInfo.dtypeSize * topkV2DataInfo::CONST_2先乘 2 再对齐,改为先对齐基础大小再乘 2,使内存分配计算更符合设计意图。


atomgit-bot
7月9日 评论:
7月9日 评论:
7月9日 添加了label:cann-cla/yes
CANN-robot
7月9日 评论:
7月9日 评论:
此处折叠了64条消息 查看更多
songkai111
7月10日 评论:
7月10日 评论:
/lgtm
/approve


7月10日 添加了label:lgtmapproved
7月10日 关闭了关联的issue
7月10日 合入了pull request
描述
修复topkv2算子在处理超大尾轴时的oom问题。
【问题原因】kernel 实际是两段独立使用,独立对齐32字节,在tiling侧实际申请时是sortOutValueGM_和outValueDbWK_先乘以2,然后在结果的基础上对齐32字节,导致实际使用的空间要比申请的大32字节,导致sortOutValueGM_这块GM在写入时会超过预配的空间;
【修复方案】在tiling侧预配GM空间时先对齐32字节,然后再乘以2,和kernel保持一致;
关联的Issue
https://gitcode.com/cann/ops-math/issues/2203
测试
ST,冒烟测试通过
文档更新
类型标签