| Bugfix for LIG over large S2 case
Co-authored-by: DaiHN<daihuina1@huawei.com>
# message auto-generated for no-merge-commit merge:
!2518 merge bugfix310lig into master
Bugfix for LIG over large S2 case
Created-by: DaiHuina1
Commit-by: DaiHN
Merged-by: cann-robot
Description: **问题/功能描述**
本次PR主要修复了LightningIndexerGrad算子在确定性模式下的梯度计算错误,并优化了其内存处理逻辑。核心问题包括:1)tiling计算中dkCoreSize参数错误地包含了batch维度,导致工作空间分配错误;2)确定性合并后,对每个核心的局部工作空间(dkCoreWorkspace)的清理逻辑使用了错误的偏移量,可能造成计算结果污染;3)确定性合并函数一次性处理过大数据块,存在超出统一缓冲区(UB)容量的风险。
**修改方案描述**
修改方案包含三个关键部分:1)修正tiling计算,将dkCoreSize的计算公式从batch * seqlenK * headDim更正为seqlenK * headDim,并同步更新了工作空间偏移计算中使用的核数变量。2)在内核中,基于新增的dkCoreSize字段,统一并修正了dkCoreWorkspace的访问与清理逻辑,确保每个核心正确清零其对应的局部空间。3)重构了确定性合并函数,引入分块处理机制,根据UB容量动态计算每次处理的数据行数,避免了潜在的缓冲区溢出风险。此外,在相关数据结构和头文件中新增了dkCoreSize成员以支持上述修正。
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000-->
<!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。-->
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
## 类型标签
<!-- [x] 表示选中 -->
- [x] 🐛 Bug 修复
- [ ] ✨ 新特性
- [ ] ⚡ 性能优化
- [ ] ♻️ 重构
- [ ] 🧪 测试
- [ ] 📦 构建/CI
- [ ] 🔧 配置变更
- [ ] 📝 文档更新
- [ ] ⬆️ 依赖升级
- [ ] 🔒 安全修复
- [ ] 🧹 代码清理
- [ ] ❓ 其他,请描述:
See merge request: cann/ops-transformer!2518 | 2 个月前 |