| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 5 天前 | |
【PR】: AF日志易用性整改 Co-authored-by: s00357600sgd<shenguodong1@huawei.com> # message auto-generated for no-merge-commit merge: !1864 merge autofusion_log_daily_develop into develop 【PR】: AF日志易用性整改 Created-by: s003576sgd Commit-by: s00357600sgd Merged-by: cann-robot Description: # Pull Request ## 描述 整改工具扫描的日志中存在的拼写错误、中文、缺少度量单位等低级问题,并排查类似问题统一修改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1864 | 1 天前 | |
style: 统一 Autofuse 代码格式 Co-authored-by: Ling-DT<lingxing@huawei.com> # message auto-generated for no-merge-commit merge: !921 merge style/clang-format-autofuse-20260611 into develop style: 统一 Autofuse 代码格式 Created-by: ling-DT Commit-by: Ling-DT Merged-by: cann-robot Description: # Pull Request ## 描述 基于 cann/graph-autofusion:develop 最新提交 46a23b0,使用仓库根目录 .clang-format 对 autofuse/ 目录内受版本管理的 C/C++/AscendC 源文件执行统一格式化。 本 PR 仅包含 autofuse/ 目录格式化变更;super_kernel/ 目录格式化变更按要求暂留本地,未提交到本 PR。 格式化工具:clang-format 18.1.8,参数:--style=file。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 描述测试此变更的步骤和前提条件: 1. /tmp/opencode/clang-format-18-venv/bin/clang-format -i --style=file <autofuse C/C++/AscendC files> 2. git diff --cached --check 3. git diff --name-only HEAD~1..HEAD | cut -d/ -f1 | sort | uniq -c 确认 PR 提交仅包含 autofuse/。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本 PR 为纯格式化变更,不涉及功能逻辑、接口、构建脚本或打包内容修改。 See merge request: cann/graph-autofusion!921 | 2 个月前 | |
【PR】: AF日志易用性整改 Co-authored-by: s00357600sgd<shenguodong1@huawei.com> # message auto-generated for no-merge-commit merge: !1864 merge autofusion_log_daily_develop into develop 【PR】: AF日志易用性整改 Created-by: s003576sgd Commit-by: s00357600sgd Merged-by: cann-robot Description: # Pull Request ## 描述 整改工具扫描的日志中存在的拼写错误、中文、缺少度量单位等低级问题,并排查类似问题统一修改 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在当前页面的右侧'关联Issue'部分添加相应Issue链接,并勾选'合并后关闭已关联的 Issue'选项。 --> ## 如何测试 描述测试此变更的步骤和前提条件: 1. 2. ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如: feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 See merge request: cann/graph-autofusion!1864 | 1 天前 | |
fix: rename ASCIR Expm and improve small-value precision Co-authored-by: zqmin<zengqingmin2@huawei.com> # message auto-generated for no-merge-commit merge: !1673 merge feat/ascir-expm1-precision-fix into develop fix: rename ASCIR Expm and improve small-value precision Created-by: zqmin Commit-by: zqmin Merged-by: cann-robot Description: # Pull Request ## 描述 将 Autofuse V35 ASCIR 算子从 Expm 全链路重命名为 Expm1,不保留旧接口兼容层;将 regbase 的 Exp(x) - 1 MicroAPI 实现替换为参考 ops-math@8dbdf417d26110f289c6420693fdff1823722da0 的高精度 SIMT 算法,修复接近零输入的灾难性抵消问题。 同步更新 ASCIR 注册、ATT、Codegen、性能注册、Python/C++ 绑定、GE bridge、share graph、regbase 资产和 backend E2E。BF16 E2E 增加 0、-0 及多组正负小值精度回归。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [x] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. cmake --build build --target ascir_builtin_ops -j 8:通过。 2. pre-commit 全套检查:trailing whitespace、EOF、YAML、large files、merge conflicts、private key、JSON、clang-format、ruff、codespell 和 OAT 全部通过。 3. 受控 autofuse/ 源码静态检索确认旧 Expm、ExpmExtend、ExpmImplVF、Expm1ImplVF、kExpm、expm_reg_base.h、expm_test 无残留。 4. CANN 9.2 隔离环境已验证 Codegen 测试和生成 Device C++ 编译;tikicpulib 数值执行受环境中 BF16→FP32 CastExtend 的 pv_reg_read 未知指令限制,未作为本次算法失败处理。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [x] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次按需求有意删除旧 Expm Python/C++/ASCIR 名称,不提供 alias 或 wrapper。SIMT 路径可能增加执行成本,仿真耗时不作为性能依据;真实硬件性能后续按需 profiling。 See merge request: cann/graph-autofusion!1673 | 9 天前 | |
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 | 5 天前 | |
fix: 保留后端不支持的浮点 Cast 路径(#247) Co-authored-by: zqmin<zengqingmin2@huawei.com> # message auto-generated for no-merge-commit merge: !1762 merge fix/validate-cast-bypass into develop fix: 保留后端不支持的浮点 Cast 路径(#247) Created-by: zqmin Commit-by: zqmin Merged-by: cann-robot Description: # Pull Request ## 描述 重构 ImprovePrecision 连续 Cast 链处理逻辑,解决逐节点删除 Cast 时因图连接变更导致的级联错误和不支持 dtype 转换被错误折叠的问题。 核心改动: - 将 Cast 处理从逐节点 CastNodeProc 改为两阶段 ProcessCastChains:先统一收集线性链并做 DP 最小保留路径规划,再对保留的 Cast 执行精度后处理。 - DP 使用 CanCollapseCast 判断每条 dtype 转换边是否被后端支持,identity 转换成本为 0,真实转换成本为 1,确保不保留冗余 identity Cast。 - 不重新创建 Cast 节点,只调用 DelNode 删除不需要的原始 Cast 并重连上下游。 - 移除 ShouldDeleteCastNode,保留原有 IsFloatToUltraLowNeedInsertCast 和 ShouldChangeDataType 后处理逻辑。 检视修复: - MarkRetainedCastNodes 回溯循环增加越界保护,避免后续修改 DP 时引入死循环。 - ProcessCastChains 对 GetPeerOutNode 失败做容错,孤立节点不再中断整个 pass。 - CollectLinearCastChain 去除冗余的线性检查条件。 - 移除 ProcessCastNodePrecision 前置声明,按调用顺序重排函数定义。 测试改进: - 修正 UT Fp32ToFp16CastBeforeStore 为真实的 FP32 到 FP16 场景(原测试名与实际 dtype 不一致)。 - 新增 UT NonFloatSourceCastChain_FallbackDeletesIdentity 覆盖 fallback 路径。 - 抽取 UT/ST 重复 helper 到 improve_precision_test_utils.h,消除 codecheck 重复代码告警。 ## 变更类型 - [x] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 关联 #247:ImprovePrecision 保留后端不支持的浮点 Cast 中间路径。 ## 如何测试 1. cmake --build build-cast-fix --target optimize_ut optimize_st -j 8 2. ./build-cast-fix/autofuse/tests/ut/optimize/optimize_ut --gtest_filter='TestImprovePrecisionUT.*',4 个用例通过。 3. ./build-cast-fix/autofuse/tests/st/optimize/optimize_st --gtest_filter='TestImprovePrecisionST.*',25 个用例通过。 4. pre-commit 和 OAT 检查全部通过。 ## 核对清单 - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 涉及文件:improve_precision.cpp、improve_precision_test_utils.h、test_improve_precision.cpp(UT/ST) - DP 保证 source < target 约束使回溯严格递减,不会产生环 - 非线性链、非浮点链、分支链保留原有单节点处理逻辑 See merge request: cann/graph-autofusion!1762 | 10 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 5 天前 | ||
| 1 天前 | ||
| 2 个月前 | ||
| 1 天前 | ||
| 9 天前 | ||
| 5 天前 | ||
| 10 天前 |