| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
quantize_add_layer_norm arch35 cleancode整改 Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !10498 merge fix/quantize_add_layer_norm_cleancode into master quantize_add_layer_norm arch35 cleancode整改 Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 PR #8234 合入后 cleancode 检查三项不达标: 1. quantize_add_layer_norm_regbase_helper.h 550 行,超过头文件 500 行阈值; 2. 8 个函数超过 50 行阈值(最大的 VFCalcMeanVar 232 行); 3. welford kernel 的 Process() 圈复杂度 25,超过阈值 20。 本 PR 为纯结构重构,不改任何计算逻辑: - classify_rule.yaml中ops/ops-nn/norm/quantize_add_layer_norm/已经覆盖了quantize_add_layer_norm算子适配950新增的文件,去掉之前额外加在classify_rule.yaml的文件。 - 新增 quantize_add_layer_norm_regbase_stats.h,把 mean/var 统计类函数(VFCalcMeanVar/VFCalcMeanVarFast 等)从 helper.h 挪过去,两个文件都在 500 行以内; - 超长函数拆小:VFCalcMeanVar 拆成每行两段(mean 相 / var 相)加块级小函数,FinalizeAlign 与两个 kernel 的 Init / VFCalcYQuant / Process 用同样拆法。拆分方式对照 rms_norm、add_layer_norm 等已合入代码的函数组织习惯,代码逐字搬移; - 唯一的等价改写:var 相改为从 UB 广播装载 mean(DIST_BRC_B32),替代原来跨段持有的寄存器直通,与本算子 full_load 路径 VFCalcYQuant 的现有写法一致; - 原 6 处 LocalMemBar 的数量、方向、作用域位置逐一核对,保持不变。 ## 关联的Issue 无(承接 MR #8234 的 cleancode 整改)。 ## 测试 蓝区真实环境(CANN 9.2.0-beta.2,Ascend950PR): - 950 kernel 构建(build.sh --soc=ascend950 --opkernel):零错误,binary 6 个 .o,与合入基线一致; - 950 host UT:14/14 PASSED; - 910b 回归(build.sh --soc=ascend910b -u):无 FAILED(910b 与 host 路径未改动); - 本地 pre-commit 全绿(含 clang-format、OAT 许可证检查)。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码重构(cleancode 检查整改,零语义变更) ## AI/Agent生成声明 - [ x] AI辅助编写 See merge request: cann/ops-nn!10498 | 1 个月前 | |
quantize_add_layer_norm算子支持950 Co-authored-by: boes129<chenqi185@huawei.com> # message auto-generated for no-merge-commit merge: !8234 merge feat/quantize_add_layer_norm_ascend950 into master quantize_add_layer_norm算子支持950 Created-by: boes129 Commit-by: boes129 Merged-by: cann-robot Description: ## 描述 **背景**: QuantizeAddLayerNorm 融合 (x1+x2+bias) → LayerNorm → 静态量化,输出 INT8 y 与残差 x,是 vllm-ascend W8A8 链路上 LayerNorm-quant 家族成员(同族 add_layer_norm_quant 已全量支持 950)。此前该算子仅支持 910B / 910_93 / Kirin,Ascend 950(arch35/regbase)无注册,属功能性缺口。本 PR 按家族标准模式补齐 950 支持:单提交 9b3f1af1d,18 个文件,+4077/−11,基于 upstream/master(6f805c527)。 **方法**:仿照兄弟算子 add_layer_norm_quant 已合入的 arch35 实现模式(混合法:kernel 分发入口 + 预编译二进制): - **登记**:def.cpp 新增 config_950,dtype 契约与 910B 完全一致(y 恒 INT8、x 跟随主路;fp16 主路→scales/zp=fp32、bf16 主路→scales/zp=bf16、fp32 主路→scales/zp=fp32),全部输入 .AutoContiguous()。910B / 910_93 / Kirin 配置与逻辑一行未动。 - **Tiling**:tiling.cpp 按家族标准骨架 CanUseRegbase 分流(950 → 新调度员;其余走原 910B 逻辑,仅函数名加 Membase 后缀,内容未改)。新增 tiling_arch35.cpp:12 个 tiling key(8001~8122 = 2 种 UB 策略 × 2 种 bias 形态 × 3 种量化模式),full_load(整行驻留、两遍统计,数值路径与 910B 一致)与 welford(列分块、单遍流式统计)双策略。 - **Kernel**:新增 _apt.cpp 12-key 分发入口 + arch35 三件(helper / full_load / welford);复用 add_layer_norm 的 arch35 共享头与 norm_common 归约原语(编译期源码级复用,运行时零依赖),op_host/CMakeLists.txt 声明 DEPENDENCIES add_layer_norm norm_common(norm 族 39 个算子的标准做法)。 - **预编译**:config/ascend950/binary.json 共 6 条(3 个 dtype 槽位 × zero_points 有无),simplified_key 与 GenSimplifiedKey 严格对齐。 - **测试与文书**:host tiling UT +12、kernel 冒烟 UT +3、golden 生成/比对脚本(numpy,补该算子无 golden 的历史缺口,真卡 ST 可直接复用)。 ## 关联的Issue 关联Issue #4496([Requirement|需求建议]: quantize_add_layer_norm 增加 Ascend 950 支持) **详细的算子设计方法在下面ISSUE中体现:** https://gitcode.com/cann/ops-nn/issues/4496 ## 测试 1. **host tiling UT**(伪 950 平台,无需真机):新增 12 例,覆盖 full_load/welford × bias 形态 × 量化模式的 key 落位(8001~8122)与核数断言;连同 910B 既有 infershape/dtype 2 例回归 → **14/14 PASSED**。 2. **kernel UT**(c310 模拟器):full_load / full_load fast-path(D=64)/ welford 三组形状 × 3 种量化模式,3 例**跑通冒烟**。说明:CANN 9.0.0-beta.2 模拟器不完整模拟量化系 regbase 指令流——同仓佐证:batch_norm 基线全绿且 0 条 unknown instr(模拟器本身健康),rms_norm_quant_v2 等 950 量化系算子同为此限制、其 kernel UT 即 run-only。数值正确性不由模拟器断言,golden 比对基建已备,交由真卡 ST 验证。 3. **全矩阵回归**(真实环境,三 SoC): | SoC | 结果 | |---|---| | ascend950 | 二进制全部产出;host UT 14 例全过;kernel UT 3 例冒烟通过 | | ascend910b | host UT 14 例全过;kernel UT 既有 6 例通过,无回归 | | ascend910_93 | 编译通过,binary_info_config 正确注册 QuantizeAddLayerNorm | 4. **终态复验**(2026-09-07,真实 950 环境,对最终单提交 9b3f1af1d 重新 clone 验证):HEAD 正确;binary.json = 6 条;构建恰好产出 **6 个 .o**(与 6 条 binary 一一对应);binary_info_config.json 含 QuantizeAddLayerNorm;UT 14+3 PASSED、0 [ FAILED ]。 构建命令:bash build.sh --soc=ascend950 --ops=quantize_add_layer_norm -u / --opkernel。 > **量化输出契约说明**:Ascend 950 硬件支持 FP8/INT4 等量化输出,本 PR 保持与 910B 语义及家族 950 先例(add_layer_norm_quant / layer_norm_quant)一致的 INT8 契约;若下游需要 FP8 输出,属算子接口演进,建议另立 issue 讨论。 ## 文档更新 - README.md:支持矩阵 Ascend 950PR / 950DT × → √。 - classify_rule.yaml:HPTG1 追加 3 类 arch35 路径备案(tiling_arch35.cpp / config/ascend950/ / op_kernel/arch35/)。 - docs/zh/op_list.md:各列为 SoC 无关维度,确认无需改动。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!8234 | 1 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 | |
format cpp Co-authored-by: yang-di52<yangdi52@huawei.com> # message auto-generated for no-merge-commit merge: !6784 merge issue_fix into master format cpp Created-by: yang-di52 Commit-by: yang-di52 Merged-by: cann-robot Description: ## 描述 批量刷新cpp代码格式 ## 关联的Issue [#3791](https://gitcode.com/cann/ops-nn/issues/3791) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:代码格式化 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!6784 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 | ||
| 3 个月前 |