| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
增加A2 A3新算子支持 Co-authored-by: slx2008<shaolixin@huawei.com> # message auto-generated for no-merge-commit merge: !448 merge master into master 增加A2 A3新算子支持 Created-by: songkai111 Commit-by: slx2008 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!448 | 9 个月前 | |
修复STFT算子int32/uint32溢出风险 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !3133 merge master into master 修复STFT算子int32/uint32溢出风险 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 排查整改STFT可能存在的int32、uint32溢出风险 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3133 | 3 个月前 | |
fix(stft): 修复STFT算子MTE3与Cube matmul流水线竞态导致的精度偶现失败 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !5071 merge master into master fix(stft): 修复STFT算子MTE3与Cube matmul流水线竞态导致的精度偶现失败 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 问题背景 fix #2868 https://gitcode.com/cann/ops-math/issues/2868 https://gitcode.com/cann/ops-math/issues/2778 STFT 算子在 atk 批跑精度测试中偶现失败:单跑成功、批跑失败用例不固定,失败时 NPU 输出在部分行的尾部帧输出 0。详细分析见 issue #2868。 ## 根因 STFT AICore kernel 内 **MTE3(UB→GM 异步拷贝,Vector 流水线)与 Cube matmul(读 GM,Cube 流水线)之间缺少跨流水线同步**。三处竞态点: 1. StftPlanMul::Process():plan×window 写 plan workspace 后无等待,主算子 matmul 立即读 2. STFTGeneralized::Process():SplitWindows 写 splitWindow workspace 后无等待 3. STFTGeneralizedComplex::Process():complex 路径同样问题 首次调用时 workspace 为新分配(全 0),matmul 抢先读到未写入数据 → 输出 0;后续调用残留上次正确数据掩盖竞态 → 偶现特性。 ## 修复内容 三处 MTE3 写 workspace 后、Cube matmul 读取前插入 HardEvent::MTE3_S 事件同步: cpp event_t eventIdMTE3ToS = static_cast<event_t>(GetTPipePtr()->FetchEventID(HardEvent::MTE3_S)); SetFlag<HardEvent::MTE3_S>(eventIdMTE3ToS); WaitFlag<HardEvent::MTE3_S>(eventIdMTE3ToS); 顺带清理 stft_tiling_base 中冗余代码:删除从未使用的 l1Size/l0ASize/l0BSize/l0CSize 成员(其中 l0A/B/C 获取时误用 CoreMemType::UB)及重复的 l1SizePlatform 赋值。 ## 验证 Ascend950PR 环境验证: - 修复前:atk 批跑 5 用例通过率约 60%,失败用例轮换 - 修复后:**10 轮 × 5 用例 = 50/50 全部 PASS**;25 次逐次调用(每次不同输入)全部与 CPU 参考一致(max_diff < 1e-4),零值消失 - pre-commit 检查全部通过(clang-format/codespell/OAT 合规) See merge request: cann/ops-math!5071 | 1 个月前 | |
fix(stft): 修复STFT算子MTE3与Cube matmul流水线竞态导致的精度偶现失败 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !5071 merge master into master fix(stft): 修复STFT算子MTE3与Cube matmul流水线竞态导致的精度偶现失败 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 问题背景 fix #2868 https://gitcode.com/cann/ops-math/issues/2868 https://gitcode.com/cann/ops-math/issues/2778 STFT 算子在 atk 批跑精度测试中偶现失败:单跑成功、批跑失败用例不固定,失败时 NPU 输出在部分行的尾部帧输出 0。详细分析见 issue #2868。 ## 根因 STFT AICore kernel 内 **MTE3(UB→GM 异步拷贝,Vector 流水线)与 Cube matmul(读 GM,Cube 流水线)之间缺少跨流水线同步**。三处竞态点: 1. StftPlanMul::Process():plan×window 写 plan workspace 后无等待,主算子 matmul 立即读 2. STFTGeneralized::Process():SplitWindows 写 splitWindow workspace 后无等待 3. STFTGeneralizedComplex::Process():complex 路径同样问题 首次调用时 workspace 为新分配(全 0),matmul 抢先读到未写入数据 → 输出 0;后续调用残留上次正确数据掩盖竞态 → 偶现特性。 ## 修复内容 三处 MTE3 写 workspace 后、Cube matmul 读取前插入 HardEvent::MTE3_S 事件同步: cpp event_t eventIdMTE3ToS = static_cast<event_t>(GetTPipePtr()->FetchEventID(HardEvent::MTE3_S)); SetFlag<HardEvent::MTE3_S>(eventIdMTE3ToS); WaitFlag<HardEvent::MTE3_S>(eventIdMTE3ToS); 顺带清理 stft_tiling_base 中冗余代码:删除从未使用的 l1Size/l0ASize/l0BSize/l0CSize 成员(其中 l0A/B/C 获取时误用 CoreMemType::UB)及重复的 l1SizePlatform 赋值。 ## 验证 Ascend950PR 环境验证: - 修复前:atk 批跑 5 用例通过率约 60%,失败用例轮换 - 修复后:**10 轮 × 5 用例 = 50/50 全部 PASS**;25 次逐次调用(每次不同输入)全部与 CPU 参考一致(max_diff < 1e-4),零值消失 - pre-commit 检查全部通过(clang-format/codespell/OAT 合规) See merge request: cann/ops-math!5071 | 1 个月前 | |
fix(stft): 修复STFT算子MTE3与Cube matmul流水线竞态导致的精度偶现失败 Co-authored-by: east_yang<yangdong48@huawei.com> # message auto-generated for no-merge-commit merge: !5071 merge master into master fix(stft): 修复STFT算子MTE3与Cube matmul流水线竞态导致的精度偶现失败 Created-by: east_yang Commit-by: east_yang Merged-by: cann-robot Description: ## 问题背景 fix #2868 https://gitcode.com/cann/ops-math/issues/2868 https://gitcode.com/cann/ops-math/issues/2778 STFT 算子在 atk 批跑精度测试中偶现失败:单跑成功、批跑失败用例不固定,失败时 NPU 输出在部分行的尾部帧输出 0。详细分析见 issue #2868。 ## 根因 STFT AICore kernel 内 **MTE3(UB→GM 异步拷贝,Vector 流水线)与 Cube matmul(读 GM,Cube 流水线)之间缺少跨流水线同步**。三处竞态点: 1. StftPlanMul::Process():plan×window 写 plan workspace 后无等待,主算子 matmul 立即读 2. STFTGeneralized::Process():SplitWindows 写 splitWindow workspace 后无等待 3. STFTGeneralizedComplex::Process():complex 路径同样问题 首次调用时 workspace 为新分配(全 0),matmul 抢先读到未写入数据 → 输出 0;后续调用残留上次正确数据掩盖竞态 → 偶现特性。 ## 修复内容 三处 MTE3 写 workspace 后、Cube matmul 读取前插入 HardEvent::MTE3_S 事件同步: cpp event_t eventIdMTE3ToS = static_cast<event_t>(GetTPipePtr()->FetchEventID(HardEvent::MTE3_S)); SetFlag<HardEvent::MTE3_S>(eventIdMTE3ToS); WaitFlag<HardEvent::MTE3_S>(eventIdMTE3ToS); 顺带清理 stft_tiling_base 中冗余代码:删除从未使用的 l1Size/l0ASize/l0BSize/l0CSize 成员(其中 l0A/B/C 获取时误用 CoreMemType::UB)及重复的 l1SizePlatform 赋值。 ## 验证 Ascend950PR 环境验证: - 修复前:atk 批跑 5 用例通过率约 60%,失败用例轮换 - 修复后:**10 轮 × 5 用例 = 50/50 全部 PASS**;25 次逐次调用(每次不同输入)全部与 CPU 参考一致(max_diff < 1e-4),零值消失 - pre-commit 检查全部通过(clang-format/codespell/OAT 合规) See merge request: cann/ops-math!5071 | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 个月前 | ||
| 3 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |