已合并
dynamic_mx_quant zero block with maxLowBound fix #7894
dynamic_mx_quant zero block with maxLowBound fix #7894
已合并
季骏创建于 7月24日
季骏
季骏
7月24日

描述

dynamic_mx_quant的maxLowBound逻辑,不同模板不统一的修改

关联的Issue

#4310

测试

已通过ST测试

文档更新

不涉及

类型标签

AI/Agent生成声明

likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 季骏 的贡献)
季骏季骏
7月24日 创建了 pull request,commit 4a269bec
atomgit-bot
atomgit-bot
7月24日 评论:

变更摘要

本次变更修复了 dynamic_mx_quant 量化过程中,当数据块全为零时,maxLowBound(最大下界)会错误地将全零块提升为非零值,导致量化后的共享指数(mxScale)未能正确反映原始零块属性的问题。修复方案是在计算共享指数时,先检测全零块,再通过掩码将对应位置的 mxScale 强制置零,确保全零块的量化结果保持为零。

主要改动

  • 全零块检测:在 dynamic_mx_quant_not_tail_axis_optimize_high_perf_large_tail.hdynamic_mx_quant_not_tail_axis_optimize_high_perf_small_tail.h 中,均新增了 Reg::CompareScalar<uint32_t, CMPMODE::NE> 比较指令,在应用 maxLowBound_ 之前将数据块与 FP32_NUMBER_ZERO 比较,生成零块掩码 pZeroBlock / maxLowBoundMask

  • 零块 mxScale 强制置零:两文件中在 mxScale 计算完成后,若处于 MODE_ONE 模式,新增 Reg::Select<uint32_t> 指令,利用零块掩码将对应位置的 mxScale0FP32/mxScale1FP32/mxScaleU32 替换为 zeroU32(即 FP32_NUMBER_ZERO)。

  • 新增寄存器资源:两文件均新增了 Reg::RegTensor<uint32_t> zeroU32 寄存器的声明与 Reg::Duplicate(zeroU32, FP32_NUMBER_ZERO) 初始化;large_tail 文件还新增了 Reg::MaskReg pZeroBlock 掩码寄存器。

likedislike
不准确?
atomgit-bot
atomgit-bot
7月24日 评论:

代码审查

审查总结

优先级 数量
P0 0
P1 0
P2 0
P3 2

整体风险评估:低风险。 本次 diff 的逻辑正确,在 MODE_ONE 计算模式下为两个高性能优化变体(large_tail 和 small_tail)新增了零块(全零数据块)的 scale 清零处理。零块检测的时机(在 Maxs(maxLowBound_) 之前捕获原始 manAbs0FP32 / absMaxU32)和覆写时机(在 Pack 之前用 Select 将 scale 置零)均正确。报告的两项 P3 问题均为掩码/字段命名与语义不符,不影响当前代码正确性,但建议修改以避免后续维护中的理解错误。

各文件审查结果

  • quant/dynamic_mx_quant/op_kernel/arch35/dynamic_mx_quant_not_tail_axis_optimize_high_perf_large_tail.h:1 项 P3(pZeroBlock 命名与语义相反)
  • quant/dynamic_mx_quant/op_kernel/arch35/dynamic_mx_quant_not_tail_axis_optimize_high_perf_small_tail.h:1 项 P3(maxLowBoundMask 字段名与实际用途不符)

⚠️ 已识别出整体风险,但无法提取行内评论,请参考整体评估。

likedislike
不准确?
CANN-robotCANN-robot成员
7月24日 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
7月24日 评论:

CLA Signature Pass

ji-jun1, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robot
CANN-robot成员
7月24日 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here
You can get sig-info at here


PR Approval Progress

Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
quant 苏跃明, 王星 (2/2) 苏跃明, 王星 (2/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)
likedislike
季骏
季骏
7月24日 评论:

compile

likedislike
季骏季骏
7月24日 update merge request[project id: 7665709, iid: 7894, commit_id: ac17bd00a86c0592664e790f6a4f9c553528dfea] virtual merging success
CANN-robotCANN-robot成员
7月24日 将zengjuan,sxb154714,chenfeng61,crystalhu,yangyang016,fanqirui,su-yueming,zhajianqing123,chenqi317,LinPX,wang-xing001,liubo75,tangweiwei2,wangzitao_leo,xubinglin,liujie12345678,Chen_HaoWen,liuyang_806设为评审人
CANN-robotCANN-robot成员
7月24日 将sxb154714,chenfeng61,su-yueming,zhajianqing123,LinPX,wang-xing001,wangzitao_leo,xubinglin,liujie12345678,Chen_HaoWen,liuyang_806设为审查人
CANN-robotCANN-robot成员
7月24日 添加了label:ci-pipeline-running
CANN-robot
CANN-robot成员
7月24日 评论:

流水线任务触发成功
任务链接 [06a66a95d7de4e6e9bfb61b688ce5bb3][流水线指导]

任务名称状态日志下载链接
Compile_Ascend_X86_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950 ✅ SUCCESS >>>>> >>>>>
Compile_Pre ✅ SUCCESS >>>>>
pre_comment ✅ SUCCESS >>>>>
Compile_Ascend_X86 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_mobile_station_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_X86_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_single_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_experimental_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_Ascend_ARM_950_ubuntu24 ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910b ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_910c ✅ SUCCESS >>>>> >>>>>
Compile_X86_monitor_950 ✅ SUCCESS >>>>> >>>>>
Compile_classify ✅ SUCCESS >>>>>
Compile_Ascend_X86_mobile_station_9030_ubuntu24 ✅ SUCCESS >>>>> >>>>>
UT_Test_ophost ✅ SUCCESS
UT_Test_opapi ✅ SUCCESS
UT_Test_kernel ✅ SUCCESS
UT_Test_opgraph ✅ SUCCESS
PreSmoke_A900 ✅ SUCCESS >>>>>
API_Check ✅ SUCCESS >>>>>
PreSmoke_ATK_Test_A2 ✅ SUCCESS >>>>>
UT_Test_harmony-infer-chs-nn ✅ SUCCESS
UT_Test_harmony-infer-chs-nn-1 ✅ SUCCESS
UT_Test_report_lcov ✅ SUCCESS >>>>>

[2026-07-24 11:08:50]    CI执行结束

likedislike
CANN-robot
CANN-robot成员
7月24日 评论:

流水线任务触发成功
任务链接 [c47604c6875b45b1b8d26f99cff12a90][流水线指导]

任务名称状态日志下载链接
antipoison ✅ SUCCESS >>>>>
codecheck_checkpr ✅ SUCCESS
StaticCheck_codespell ✅ SUCCESS
StaticCheck_link_validity ✅ SUCCESS
StaticCheck_resource_existence ✅ SUCCESS
StaticCheck_tag_closed ✅ SUCCESS
StaticCheck_markdownlint ✅ SUCCESS
codecheck_precommit ✅ SUCCESS >>>>>
SCA ✅ SUCCESS >>>>>

[2026-07-24 10:56:39]    CI执行结束

likedislike
CANN-robotCANN-robot成员
7月24日 添加了label:api-check-pass
CANN-robotCANN-robot成员
7月24日 删除了label:ci-pipeline-running
CANN-robotCANN-robot成员
7月24日 添加了label:ci-pipeline-passed
季骏季骏
7月24日 修改了pull request 的描述
季骏季骏
7月24日 修改了pull request 的描述
su-yueming成员
7月25日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
7月25日 添加了label:approved
wang-xing001成员
7月25日 评论:

/lgtm
/approve

likedislike
CANN-robotCANN-robot成员
7月25日 添加了label:lgtm
CANN-robotCANN-robot成员
7月25日 关闭了关联的issue
CANN-robotCANN-robot成员
7月25日 合入了pull request