已关闭
[Requirement|需求]: DynamicMxQuantWithDualAxis 补充 -1 轴尾块 mxscale2 搬出的 UT 覆盖 #7826
hejc_hw创建于 3 天前关闭于 1 天前
3 天前 添加了label:requirement
3 天前 关联了pull request:[test]DynamicMxQuantWithDualAxis 补充 -1 轴尾块 mxscale2 搬出 UT 用例
3 天前 将 jianchao_He 设为负责人
1 天前 关闭了 issue
1 天前 添加了label:resolved
1 天前 issue状态由 进行中 改变为 已解决
Backgroud(背景信息)
quant/dynamic_mx_quant_with_dual_axis(arch35)的CopyOut中,mxscale2搬出的源 stridescaleSrcStride已由「按 dataLen 推算」修正为「按 ubRowLen_ 推算」:uint32_t scaleSrcStride = (DIGIT_TWO * ubRowLen_ - ops::CeilAlign(DIGIT_TWO * dataLen, UBBlockSize_)) / UBBlockSize_;原因:UB 中一个 row-pair(两个 32 行组 scale 交织后)固定占
2 * blockW(blockW = 256),与本次 task 的有效列数dataLen无关;旧公式在dimNeg1不是blockW整数倍时会算小跨距。该修复已随 commit 690291182 合入。说明:当前 248KB UB 下 host tiling 恒有
groupPerUb = 1、splitBlockH = 64,mxscale2搬出的 burst 恒为 1,该 stride 不参与寻址,因此修复属防御性改动(更大 UB 平台groupPerUb >= 2时才是有效路径)。当前
tests/ut/op_kernel/test_dynamic_mx_quant_with_dual_axis.cpp的用例都使用dimNeg1 = blockW = 256(满块),未覆盖dimNeg1 < blockW的尾块分支。Origin(信息来源)
代码修改(commit 690291182)完成后的 UT 补充,属同一改动的配套用例。
Benefit / Necessity(价值/作用)
-1轴尾块(dimNeg1 = 200 / 224)下的CopyIn/CopyOut分支(零填充、行/列尾偏移、scale1组数补偶、scale2行对搬出),防止尾块寻址逻辑回退;Design(设计方案)
在
tests/ut/op_kernel/test_dynamic_mx_quant_with_dual_axis.cpp新增两个 CPU 调试用例(ICPU_RUN_KF,blockDim = 2),直接构造DynamicMxQuantWithDualAxisTilingData:test_case_tail_dimNeg1_200_unalignedtest_case_tail_dimNeg1_224_aligned公共参数:
dimNeg2 = 128、dimNeg2Tail = 64、splitBlockH = 64、blockW = 256、dimNeg2SplitBlockNum = 2、dimNeg1BlockNum = 1、scaleAlg = 0、roundMode = 4(rint)、dstType = 35(FLOAT8_E5M2)、usedCoreNum = 2;kernel 入口::dynamic_mx_quant_with_dual_axis<0, 4, 0>(...)。验证方式:用例正常执行、无 UB/GM 越界访问(冒烟/回归;数值正确性由 ST 用例比对 golden 保证)。