| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
refactor: 面向VV融合的求解器,删除L0/L2求解器 Co-authored-by: gcw_NLOuEjCz<1309002649@qq.com> # message auto-generated for no-merge-commit merge: !1684 merge dev_test into develop refactor: 面向VV融合的求解器,删除L0/L2求解器 Created-by: gcw_NLOuEjCz Commit-by: gcw_NLOuEjCz Merged-by: cann-robot Description: # Pull Request ## 描述 【重构】删除 att HighPerf Tiling 三段式架构( L0 → L2 → General)中的 L0/L2 求解器,收敛为面向 **VV(纯 Vector)融合**的单一 General(SEARCH_TILE)求解路径。 - **删除** L0/L2 求解器本体(l0/l2_solver_code.h)、代码生成器(l0/l2_solver_gen)、SolverType 枚举(L0_TILE/L2_TILE)与专属测试(12 文件 + 死副本) - **剥离** 3 个 live 模型(matmul/ffn/solver)中的 L0/L2 变量与 Cube 容量约束;4 个 tiling_func_*_main 同批联动 - **保留** SEARCH_TILE/General 求解、HardwareDef、axes_reorder、UB Tiling 机制;IsNeedSolver 简化为"可搜索变量 > 0" - 遵循"直接删除、不补偿"原则(无 SetSolvedVars 掩盖逻辑) ### 验收指标核对(6 项逐条) | # | 验收指标 | 结果 | |:--:|:--|:--:| | 1 | 编译通过,无 L0/L2 符号残留(L0TileSolver/L2TileSolver/L0TileSolverGen/L2TileSolverGen/ExecuteL0Solver/ExecuteL2Solver) | ✅ 通过 | | 2 | General 路径只生成 General 代码(solver_pass_gen/manager UT) | ✅ 通过 | | 3 | HighPerf ST 全绿(concat/matmul/ffn 单段 General 可执行、结果正确) | ✅ 通过 | | 4 | AxesReorder 默认路径 ST 全绿 | ✅ 通过 | | 5 | 求解质量改前/改后对比无显著退化 | ⚠️ 随方向变更失效 | | 6 | L0/L2 测试清理,CMake 无残留 glob | ✅ 通过 | > **综合结果**:UT **1024/1024** + ST **109/109** 全绿;6 项中 **5 项实证通过、1 项随方向变更失效**。 > **⚠️ #5 随方向变更失效(非"未执行")**:该验收点定义在 **CV 融合**场景——改前 L0/L2 求解器求解 L0/L2 块变量(tilem/tilen(L2)、basem/basen(L0A/L0C/L1)、basek(L0A/L0B));方向已改为 **VV 融合**,L0/L2 搜索变量已从 General 求解空间**移除、不再支持求解**,General 仅搜 stepka/stepkb(L1) → **改后无对比对象,对比前提不成立**。单段 General 正确性由 UT 1024/1024 + ST 109/109 覆盖。 ## 变更类型 <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/graph-autofusion/issues/207 ## 如何测试 描述测试此变更的步骤和前提条件: 1. **编译**:cmake --build build/autofuse/tests/ut/att --target att_ut -j 8 + cmake --build build/autofuse/tests/st/att --target att_st -j 8;grep -rI 'L0TileSolver\|L2TileSolver\|ExecuteL0Solver\|ExecuteL2Solver' autofuse/ 应无残留 2. **UT**:att_ut --gtest_filter='-*Matmul*:*TilingFuncMain*'(1018/1018)+ att_ut --gtest_filter='*Matmul*'(6/6)→ **1024/1024** 3. **ST**:LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libasan.so.5 ASAN_OPTIONS=detect_leaks=0 att_st → **109/109**(含 HighPerf concat/matmul/ffn + AxesReorder) ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 - **验证结果(如实)**:6 项验收指标 5 项实证通过、1 项**随方向变更失效**(#5 求解质量对比定义于 CV 融合场景;方向改 VV 后 L0/L2 搜索变量已删除、General 不再求解,无对比对象);单段 General 正确性由 UT 1024/1024 + ST 109/109 覆盖 - **风险点**:stepm/stepn(L1 作用域,related_scope={L1,CORENUM})作为 **General 搜索变量保留**,属 L0/L2 之外,未删除;无"L1 求解器",由 SEARCH_TILE 搜索 - 详细改动对照见 复现清单与逐文件对照.md See merge request: cann/graph-autofusion!1684 | 14 天前 | |
fix: replace deprecated Cube tiling SoC query (#251) Co-authored-by: ling-DT<lingxing@huawei.com> # message auto-generated for no-merge-commit merge: !1780 merge fix/cube-tiling-aclrt-socname-251 into develop fix: replace deprecated Cube tiling SoC query (#251) Created-by: ling-DT Commit-by: ling-DT Merged-by: cann-robot Description: # Pull Request ## 描述 将 autofuse/codegen/codegen_tiling_cube.cpp 中通过旧 runtime 头文件调用的 rtGetSocSpec("version", "SoC_version", ...),按 GE 仓正式先例替换为 acl/acl_rt.h 的 aclrtGetSocName()。同步补充 acl_rt 链接依赖、Runtime stub 和 Cube codegen UT,保留 SoC 查询失败后的平台架构 fallback。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 关联 #251:Cube tiling 使用已日落的 rtGetSocSpec 查询 SoC 版本。 ## 如何测试 1. source /workspace/lingxing/0805/ascend-toolkit/set_env.sh && cmake --build build --target aihac_codegen pyautofuse -j8 2. cmake --build build --target test_main -j8,运行 Cube SoC 正常值和 nullptr fallback UT,2 tests passed。 3. TORCHINDUCTOR_COMPILE_THREADS=1 python3 /workspace/lingxing/tests/inductor-tests/test_network_fragments.py --shape-mode static --fragment 16_fp16_lhs_transpose_mm_mul,通过。 4. TORCHINDUCTOR_COMPILE_THREADS=1 python3 /workspace/lingxing/tests/inductor-tests/test_network_fragments.py --shape-mode dynamic --fragment 16_fp16_lhs_transpose_mm_mul,通过。 5. compare_inductor_matmul_fuse.py synthetic_fp32_mm_mul_1022x128 --profile --profile-warmup 5 --profile-iters 20,matmul_on 相比 matmul_off 为 -17.359%,判定 OK。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 仅迁移 Cube tiling 的 SoC 版本查询;platform_context.cpp 等其他规格查询路径未在本次范围内修改。 See merge request: cann/graph-autofusion!1780 | 7 天前 | |
feat: 新增Autofuse Ascend950真实设备验证机制 Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !1768 merge feat/autofuse-device-validation-pr into develop feat: 新增Autofuse Ascend950真实设备验证机制 Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: ## 描述 新增 Autofuse 可扩展真实设备验证机制,首期支持 Ascend950(Ascend950PR_9579)与 Ascend910_9362,并迁移 isinf_maskedfill_fusion 用例。复用现有 backend_e2e_v2 simulator 作为模拟器验证路径,新增独立 AscendCL real-device runner,支持 per-case SoC/backend 支持矩阵、精度校验、性能统计和结构化报告。设计文档见关联 Issue #281。 主要变更: - 新增 Case Contract v1 和 per-case backend + SoC + compile/functional/precision/performance 支持矩阵。 - 新增 AscendCL runtime、TensorBuffer、动态库 ABI wrapper,支持 AutofuseLaunch 与 AutofuseLaunchV2 双 ABI,V2 优先、legacy ABI 严格限制 3 输入 1 输出。 - 新增应用内 ACL Profiling + CANN analysis 离线导出的设备端性能指标 device_kernel_duration(timing_source=msprof),及 host 墙钟、p50_speedup/kernel_reduction 收益对比。 - unfused 多步骤分解(steps + $previous 串接),并支持可选 **aclnn 模式**("aclnn": "<OpName>" 声明,跳过 ASCIR/Autofuser/JIT 直接调用 CANN 原生算子,示例用例提供 --variant unfused_aclnn)。 - 新增 Ascend950 / Ascend910_9362 profile、仓库内置 JIT 适配器、多 shape 用例([128,128]/[128,130]/[127,129]/[512,512])。 - 目录按场景归组(runner/backend/tools/python/cases/profiles),中英 README 含参数速查、用例开发教程与 aclnn 调用方式说明。 - 保持现有 backend_e2e_v2 simulator、SuperKernel、生产 package 和 pyautofuse 对外接口不变。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue - 设计文档:Autofuse 真实设备验证机制(Device Validation):#281 ## 如何测试 1. Host validation:PYTHONPATH=autofuse/tests/st:$PYTHONPATH python3 -m pytest autofuse/tests/st/device_validation -q,175 passed。 2. C++ validation:cmake --build build --target device_validation_ut device_validation_runner -j 8;device_validation_ut,136 passed。 3. Ascend950 real device:npu-smi 状态 OK;fused/unfused(ASCIR 与 aclnn 双模式)functional/precision 通过,mismatch_count=0。 4. Ascend950 performance:msprof device_kernel_duration fused p50≈7.2us、unfused(aclnn) p50≈4.2us(128x128)/ 100us vs 5.7us(512x512);kernel_reduction 3→1。 5. ruff、pre-commit、clang-format --dry-run --Werror 和 git diff --check 通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 真实设备验证使用 Ascend950PR/Ascend910_9362,多 shape 完成真实 ACL launch、D2H 与独立 reference 精度校验。 - 开发阶段可用 .dev_env + 构建 pyautofuse 实现"本仓库最新 autofuse 源码自验证"(README §2)。 See merge request: cann/graph-autofusion!1768 | 1 天前 | |
【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Co-authored-by: xingzhixiong<xingzhixiong@huawei.com> # message auto-generated for no-merge-commit merge: !1149 merge develop_change_dir_of_metadef_headers into develop 【PR】: [fix] [autofuse] adapt reform of the same-named header files of ge. Created-by: xingzhixiong Commit-by: xingzhixiong Merged-by: cann-robot Description: # Pull Request ## 描述 metadef在做同名头文件整改,整改完编译发现gaf失败,原因是gaf仓和ge仓也有同名且子目录相同的头文件,故需要将gaf仓的同名头文件的子目录进行整改,只给gaf仓内部使用,避免产生耦合编译问题。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. ci流水线pass 2. RDV pass ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1149 | 1 个月前 | |
fix: 修复 ATT 注册表并删除历史 pass Co-authored-by: zhang_shengjie<804425610@qq.com> # message auto-generated for no-merge-commit merge: !1821 merge fix/att-registry-thread-safety into develop fix: 修复 ATT 注册表并删除历史 pass Created-by: zhang_shengjie Commit-by: zhang_shengjie Merged-by: cann-robot Description: # Pull Request ## 描述 ### 一、主要解决的问题 1. ATT 性能函数注册表 EvalCosts 使用 unordered_map 保存 ASCIR/AscendC 函数。注册、查找和遍历操作缺少统一同步保护,存在并发读写及静态初始化阶段访问风险。 2. ApiPerfFactory 的全局注册点过早解析性能函数,可能在注册表尚未完成初始化时访问。 3. 历史 ATTPassMgr/pass_mgr.h/matmul_align_pass 已不在当前产品 CV 融合路径使用,相关实现和测试继续保留会增加维护与构建负担。 ### 二、修改方案 - 在 EvalCosts 内增加 std::mutex,统一保护 ASCIR/AscendC 注册表的注册、查找和列表遍历。 - ApiPerfFactory 查找时在锁内复制 creator,释放锁后创建对象,避免锁内执行创建逻辑。 - 全局注册点延迟保存和解析性能函数 key,规避静态初始化顺序问题。 - 保留 v1/v35 特殊 key 映射,包括 kUnitVector、select/where、true_div/div 和 V2 key。 - 删除历史 ATTPassMgr/pass_mgr.h/matmul_align_pass 实现,以及对应 ST/UT 测试和 ModelInfo 过时代码路径。 - 按 clang-format 18.1.8 规范化 ATT 注册相关源文件,修复 codecheck_precommit 检查失败。 ### 三、代码修改流程图 mermaid sequenceDiagram participant Register as 注册阶段 participant Registry as EvalCosts 注册表 participant Factory as ApiPerfFactory participant Worker as 线程执行阶段 Register->>Registry: 加锁写入 ASCIR/AscendC creator Worker->>Factory: 请求创建性能对象 Factory->>Registry: 加锁查找并复制 creator Registry-->>Factory: 返回 creator Factory-->>Worker: 解锁后创建对象 ## 变更类型 - [x] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新 - [x] 重构 - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue - #283(fix: 修复 ATT 性能函数注册表并发安全并清理历史 pass) ## 如何测试 ### 一、测试用例说明 #### 1.1 单元测试 - ATT UT:1062/1062 通过。 - pre-commit:clang-format、pre-commit-hooks、codespell、OAT 全部通过。 #### 1.2 系统测试 - ATT ST:110/110 通过。 - ASCEND_HOME_PATH=$HOME/Ascend/cann cmake --build build --target aihac_codegen -j 8:通过。 - git diff --check upstream/develop...HEAD:通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签 - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 ### 验证方法 - 基线分支:upstream/develop。 - 远端流水线 1077921 使用 HEAD 35f01f80ba72 执行成功,并生成 ci-pipeline-passed 标签。 ### 注意事项 - 本 PR 不包含 docs 提交。 - 当前 CV 融合路径不使用历史 ATT matmul pass,删除范围仅覆盖确认无产品消费者的实现和测试。 ### 提交记录 | Commit | 描述 | 修改文件数 | 修改行数 | |--------|------|-----------:|-----------:| | 9d220d5c | 保护 ATT 性能注册表 | 1 | +10/-8 | | 3aee26c7 | 延迟 ATT 性能函数查找 | 4 | +243/-219 | | a9f9b37e | 删除历史 ATT pass manager | 5 | +0/-307 | | 83010056 | 保留最新 ATT 注册映射 | 1 | +1/-3 | | 35f01f80 | 修复 ATT 文件格式 | 2 | +267/-298 | ### 修改文件清单 | 文件路径 | 修改类型 | 说明 | |---------|---------|------| | autofuse/att/gen_model_info/api_perf_register/api_perf_factory.cpp | 修改 | creator 查找与对象创建同步策略 | | autofuse/att/gen_model_info/api_perf_register/api_perf_factory.h | 修改 | 注册工厂接口与延迟解析支持 | | autofuse/att/gen_model_info/api_perf_register/ascendc_api_perf.h | 修改 | EvalCosts 互斥保护 | | autofuse/att/gen_model_info/api_perf_register/v1/ascir_api_perf_v1.cpp | 修改 | v1 注册映射和格式化 | | autofuse/v35/att/api_perf_register/ascir_api_perf_v2.cpp | 修改 | v35/V2 注册映射和格式化 | | autofuse/att/gen_model_info/gen_model_info.cpp | 修改 | 移除历史 pass 使用链路 | | autofuse/att/gen_model_info/pass/pass_mgr.h | 删除 | 历史 pass manager | | autofuse/att/gen_model_info/pass/matmul_align_pass.cpp | 删除 | 历史 matmul pass | | autofuse/tests/ut/att/testcase/gen_model_info/pass/test_matmul_align_pass.cpp | 删除 | 对应 UT | | autofuse/tests/st/att/testcase/source_mirror/gen_model_info_content/test_att_config.cpp | 删除 | 对应 ST 配置镜像 | See merge request: cann/graph-autofusion!1821 | 1 天前 | |
修复 Broadcast 后 Reduce source reuse 判断 Co-authored-by: weishitoken<huangqianqian15@huawei.com> # message auto-generated for no-merge-commit merge: !1819 merge fix/reduce-broadcast-reuse-guard into develop fix: 修复 Broadcast 后 Reduce source reuse 判断, 避免修改复用的broadcast数据导致精度失败 Created-by: wei_shi Commit-by: weishitoken Merged-by: cann-robot Description: # Pull Request ## 描述 修复 Reduce source reuse 判断遗漏上游 Broadcast 的问题。当 Broadcast 的 B 轴与 Reduce 的 R 轴具有相同 vectorized_axis 时,禁止复用输入 source,避免 Broadcast 与 Reduce 的轴语义冲突,错误复用,导致出现精度问题。 ## 变更类型 <!-- [x] 表示选中 --> - [x] Bug 修复 - [ ] 新功能 - [ ] 代码风格更新(格式化,局部变量) - [ ] 重构(既不修复错误也不增加功能的代码变动) - [ ] 构建过程或辅助工具的变动 - [ ] 文档内容更新 ## 关联的Issue 无 ## 如何测试 1. 使用 CANN 9.2.0 配置并构建 aihac_codegen 和 test_main:均成功。 2. 针对本次 4 个变更文件执行 pre-commit run --files ...:基础检查、clang-format、codespell 和 OAT 检查均通过。 3. 执行 git diff --check:通过。 4. 目标测试运行受既有 liboptimize.so ABI/链接问题阻塞,未进入 gtest,错误为缺少 af::GraphUtils::RelinkGraphEdges 符号。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 分支相对 develop 仅包含 4 个目标文件:1 个测试构建配置、1 个共享 helper 和 2 个生产路径修改。 - .gitignore 中的既有本地修改未纳入本分支提交。 See merge request: cann/graph-autofusion!1819 | 1 天前 | |
fix: 修复 Issue 261-276 安全加固缺陷 Co-authored-by: gcw_V3YyYBt1<gaoxin32@huawei.com> # message auto-generated for no-merge-commit merge: !1791 merge develop-issue into develop fix: 修复 Issue 261-276 安全加固缺陷 Created-by: gcw_V3YyYBt1 Commit-by: gcw_V3YyYBt1 Merged-by: cann-robot Description: # Pull Request ## 描述 本次 PR 修复了 public 仓库中 Issue #261-#276 共 15 个安全加固类缺陷,涉及容器越界、空指针解引用、内存泄漏、无上界内存分配四类问题。涵盖 14 个 C++ 源文件,均为防御性编程加固。 关联 Issues: #261, #262, #264, #265, #266, #267, #268, #269, #270, #271, #272, #273, #274, #275, #276 ## 背景 在代码静态分析与安全审计中,发现以下四类潜在风险: 1. **容器越界**:外部数据驱动的容器访问未做充分边界检查(#261 ONNX attribute(0)、#262 transpose vectorized_repeats 空容器)。 2. **空指针解引用**:内部 shared_ptr/bare pointer 在解引用前未校验非空(#264 Expression::Compare、#265 HcomTopoInfo、#266 reuse_schedule_group、#268 pyascir、#269 node.cc、#270 graph_utils_ex、#271 readable_dump、#272 NddmaApi、#273 vector_func_partitioner)。 3. **逻辑反转**: to_json 中三元运算符条件反转,IsValid() 时错误返回空串,实际应在 impl_==nullptr 时返回空串(#267)。 4. **内存泄漏与无上界分配**:PGO 生成代码中 malloc 未在 return 前 free(#274);反序列化路径中读取外部文件时仅做下界校验,无上界防护(#275 model_serialize、#276 graph_utils)。 ## 修改方案 按问题类型分组修复,每处均在调用点加最小防御性校验: **容器越界(2 项)** - ge_ir_utils.cc:1241:ONNX DecodeGraph 访问 attribute(0) 前增加 attribute_size() 非空检查,空时报错返回 false。 - transpose_v2.cpp:30:GetTensorVectorizedRepeats 成功后校验 vector 非空,并改用 back() 替代 size()-1。 **空指针解引用(9 项)** - expression.cc:181:Compare 同时校验 this->impl_ 和 e.impl_。 - hcom_topo_info.cc:32:函数入口增加 group != nullptr 检查。 - tiling_code_gen_impl.cpp:4969:解引用 reuse_schedule_group shared_ptr 前先做非空断言。 - pyascir.cpp:218:PyUnicode_AsUTF8 返回 nullptr 时抛 TypeError。 - node.cc:576:GetOwnerNodeBarePtr() 返回 nullptr 时 continue。 - graph_utils_ex.cc:146,150:拆分 GetComputeGraph 返回值,加 GE_CHECK_NOTNULL。 - readable_dump.h:78:GetOpDesc() 返回 nullptr 时 continue 跳过该节点。 - ascir_api_perf_v2.cpp:129:node_ptr->GetType() 加 nullptr 三元判断兜底 "Nddma"。 - vector_func_partitioner.cpp:697:GetNodeCluster 返回 nullptr 时 continue。 **逻辑反转(1 项)** - base_types_printer.cpp:14:修正三元顺序,IsValid() 时取 Str().get(),否则取 ""。 **内存泄漏与无上界分配(3 项)** - tiling_code_gen_impl.cpp:2833,2939:仅在 PGO/inductor 路径 return 前注入 free(memory),非 PGO 路径不注入,避免误伤。 - model_serialize.cc:1143:LoadWeightFromFile 分配前加 2GB 上界(kMaxWeightLength = 2GiB)。 - graph_utils.cc:1030:ConvertFileConstToConst 加相同 2GB 上界(kMaxFileLength = 2GiB)。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构 - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue #261 #262 #264 #265 #266 #267 #268 #269 #270 #271 #272 #273 #274 #275 #276 ## 如何测试 1. 编译 Autofuse 与 SuperKernel 模块无报错(sh build.sh -j 8)。 2. 人工走读每处加固点,确认与原 issue 分析一致,不破坏原正常逻辑分支。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我在标题中使用了合适的类型标签 - [x] 我已详细阅读了贡献指南(CONTRIBUTING.md) ## 其他信息 See merge request: cann/graph-autofusion!1791 | 1 天前 | |
feat: 新增Autofuse Ascend950真实设备验证机制 Co-authored-by: Jett_Woo<wujinteng1@huawei.com> # message auto-generated for no-merge-commit merge: !1768 merge feat/autofuse-device-validation-pr into develop feat: 新增Autofuse Ascend950真实设备验证机制 Created-by: Jett_Woo Commit-by: Jett_Woo Merged-by: cann-robot Description: ## 描述 新增 Autofuse 可扩展真实设备验证机制,首期支持 Ascend950(Ascend950PR_9579)与 Ascend910_9362,并迁移 isinf_maskedfill_fusion 用例。复用现有 backend_e2e_v2 simulator 作为模拟器验证路径,新增独立 AscendCL real-device runner,支持 per-case SoC/backend 支持矩阵、精度校验、性能统计和结构化报告。设计文档见关联 Issue #281。 主要变更: - 新增 Case Contract v1 和 per-case backend + SoC + compile/functional/precision/performance 支持矩阵。 - 新增 AscendCL runtime、TensorBuffer、动态库 ABI wrapper,支持 AutofuseLaunch 与 AutofuseLaunchV2 双 ABI,V2 优先、legacy ABI 严格限制 3 输入 1 输出。 - 新增应用内 ACL Profiling + CANN analysis 离线导出的设备端性能指标 device_kernel_duration(timing_source=msprof),及 host 墙钟、p50_speedup/kernel_reduction 收益对比。 - unfused 多步骤分解(steps + $previous 串接),并支持可选 **aclnn 模式**("aclnn": "<OpName>" 声明,跳过 ASCIR/Autofuser/JIT 直接调用 CANN 原生算子,示例用例提供 --variant unfused_aclnn)。 - 新增 Ascend950 / Ascend910_9362 profile、仓库内置 JIT 适配器、多 shape 用例([128,128]/[128,130]/[127,129]/[512,512])。 - 目录按场景归组(runner/backend/tools/python/cases/profiles),中英 README 含参数速查、用例开发教程与 aclnn 调用方式说明。 - 保持现有 backend_e2e_v2 simulator、SuperKernel、生产 package 和 pyautofuse 对外接口不变。 ## 变更类型 - [ ] 🐛 Bug 修复 - [x] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue - 设计文档:Autofuse 真实设备验证机制(Device Validation):#281 ## 如何测试 1. Host validation:PYTHONPATH=autofuse/tests/st:$PYTHONPATH python3 -m pytest autofuse/tests/st/device_validation -q,175 passed。 2. C++ validation:cmake --build build --target device_validation_ut device_validation_runner -j 8;device_validation_ut,136 passed。 3. Ascend950 real device:npu-smi 状态 OK;fused/unfused(ASCIR 与 aclnn 双模式)functional/precision 通过,mismatch_count=0。 4. Ascend950 performance:msprof device_kernel_duration fused p50≈7.2us、unfused(aclnn) p50≈4.2us(128x128)/ 100us vs 5.7us(512x512);kernel_reduction 3→1。 5. ruff、pre-commit、clang-format --dry-run --Werror 和 git diff --check 通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 真实设备验证使用 Ascend950PR/Ascend910_9362,多 shape 完成真实 ACL launch、D2H 与独立 reference 精度校验。 - 开发阶段可用 .dev_env + 构建 pyautofuse 实现"本仓库最新 autofuse 源码自验证"(README §2)。 See merge request: cann/graph-autofusion!1768 | 1 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 14 天前 | ||
| 7 天前 | ||
| 1 天前 | ||
| 1 个月前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 | ||
| 1 天前 |