| feat(superkernel): support AOT early-start sync in AscendC
Co-authored-by: yrz1027<yangruizhi5@huawei.com>
# message auto-generated for no-merge-commit merge:
!2281 merge feat/aot-early-start into master
feat(superkernel): support AOT early-start sync in AscendC
Created-by: yrz1027
Commit-by: yrz1027
Merged-by: cann-robot
Description: ## 描述
<!--在这里详细描述你的改动,包括改动的原因和所采取的方法。-->
为 graph-autofusion AOT early-start 原型补齐 asc-devkit 侧 kernel 与 compile-op 基础支撑,使 aclgraph/super-kernel sub-combine 路径可以通过 task sync config 将 host 侧计算出的 early-start 同步 mask 下发到算子内部,并在算子内部完成 SetNextTaskStart / WaitPreTaskEnd 同步动作。
主要改动:
- 扩展 SetNextTaskStart / WaitPreTaskEnd 公共入口,新增 FORCE 模板参数;sub-combine 场景通过 <true> 进入 AOT early-start 强制同步路径,旧 V1/V2 宏路径保持兼容。
- 在 c220 / 3510 等架构实现和模板路径中补齐 early-start set/wait 同步能力,并保持非目标架构的 unsupported guard 与接口兼容。
- 将 sub-combine wrapper 侧 task sync config 转化为算子内部可使用的运行时同步配置,保留 SK_BIND cap_bitmap 作为算子内部 set/wait capability 描述。
- 补充 adapter 与 asc_op_compiler 双路径单元测试,覆盖 sub-combine 场景下 early-start flag 记录和补同步代码生成。
影响边界:
- 本 MR 只补齐 asc-devkit 侧 AOT early-start kernel 接口和 compile-op codegen 基础能力。
- host 侧同步关系计算、task queue 组装、sync all fallback 与 mask 下发策略由 graph-autofusion 侧实现。
- 旧 compile-op 自组 superkernel V1/V2 路径不切换到模板强制同步路径,仍保持原宏控制逻辑。
- 用户自定义 SK_BIND cap 与实际 Set/Wait 分支一致性的额外看护机制不在本 MR 范围内。
## 关联的Issue
<!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #xxx-->
无
## 测试
<!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。-->
- git diff --check cann-origin/master...HEAD
- python3 -m py_compile tools/build/asc_op_compile_base/asc_op_compiler/compile_op.py tools/build/asc_op_compile_base/asc_op_compiler/super_kernel_sub_op_compile.py tools/build/asc_op_compile_base/asc_op_compiler/super_kernel_sub_op_infos.py tools/build/asc_op_compile_base/adapter/compile_op.py tools/build/asc_op_compile_base/adapter/super_kernel_sub_op_compile.py tools/build/asc_op_compile_base/adapter/super_kernel_sub_op_infos.py
- rg "__ASCENDC_SUPERKERNEL_EARLY_START_V3|SkEarlyStartMask|unsupported early-start V3" impl/basic_api include/basic_api tools/build/asc_op_compile_base 无残留匹配
- 已尝试执行 python3 -m pytest tests/python/adapter/test_ascendc_compile_base.py tests/python/adapter/test_ascendc_super_kernel.py tests/python/asc_op_compiler/test_ascendc_compile_base.py tests/python/asc_op_compiler/test_ascendc_super_kernel.py -q,当前本地环境在收集阶段未完成:adapter 路径受 psutil.net_if_addrs() 权限限制,asc_op_compiler 路径缺少 tools/build/asc_op_compile_base/c_api/libasc_platform.so。
未执行完整 asc-devkit 编译或 compile-op 端到端验证,后续需结合 graph-autofusion AOT early-start 链路继续验证。
已跑现网A3 deepseek红线用例,确保兼容性
## 文档更新
<!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。-->
无
## 类型标签
<!-- [x] 表示选中 -->
- [ ] 🐛 fix: Bug 修复
- [x] ✨ feat: 新功能
- [ ] ⚡ perf: 性能优化
- [ ] ♻️ refactor: 代码重构
- [x] 🧪 test: 新增或修改测试
- [ ] 📝 docs: 文档更新
- [ ] 🔧 ci: CI/CD 配置修改
- [ ] ↩️ revert: 回退
- [ ] 🧹 chore: 其他,请具体描述
See merge request: cann/asc-devkit!2281 | 12 天前 |