|
Co-authored-by: DaiHN<daihuina1@huawei.com>
# message auto-generated for no-merge-commit merge:
!2201 merge lig_deter into master
Implement of LIG's deterministic function
Created-by: DaiHuina1
Commit-by: DaiHN
Merged-by: cann-robot
Description: **问题/功能描述**
本次PR为LightningIndexerGrad算子增加了对确定性计算模式的支持,并重构了其核心调度与数据分割逻辑。主要解决了两个核心问题:一是在确定性模式下,多核并行计算梯度时,各核心需要独立的工作空间来存储中间结果,以确保计算结果的确定性和可复现性;二是原有实现中任务划分与批次循环耦合过紧,在变长序列(TND布局)等场景下存在负载不均和灵活性不足的问题,通过重构提升了算子在大规模、非均匀数据下的并行效率和稳定性。
**修改方案描述**
修改方案主要包括功能增强和逻辑重构两部分。在功能上,新增了核心级工作空间dkCoreWorkspace及其对应的内存偏移管理(dkCoreWorkspaceOffset),为每个核心分配独立的梯度缓存区域,并新增DeterministicMerge函数,使用原子操作将各核心的中间结果确定性地归约到全局梯度张量中。在逻辑上,重构了核间任务划分机制,引入了CoreSplitInfo结构体封装任务信息,将任务划分逻辑拆分为更清晰的DoSplit、SplitCore等函数,支持基于批次和序列长度的动态、均衡分割。同时,修复了ScatterAdd操作中的地址计算错误,并增加了必要的事件同步机制,确保了多核并行计算的正确性。
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
## 类型标签
<!-- [x] 表示选中 -->
- [ ] Bug修复
- [ ] 新特性
- [ ] 性能优化
- [ ] 文档更新
- [ ] 其他,请描述:
See merge request: cann/ops-transformer!2201 | 2 个月前 |