已关闭
[Bug-Report|缺陷反馈]: QuantMatmul NZ 空输出、A4W4I 调度及 InplaceAdd yRef 文档标记 #5950
ddssz创建于 19 天前关闭于 18 天前
19 天前 添加了label:bug-report
19 天前 关联了pull request:fix(matmul): 修复 NZ 空输出和 A4W4I 调度,纠正 yRef 约束
19 天前 修改了issue 的描述
19 天前 将 smdbha 设为负责人
19 天前 修改标题为 “[Bug-Report|缺陷反馈]: QuantMatmul NZ 空输出、A4W4I 调度及 InplaceAdd yRef 文档标记”,原标题为“[Bug-Report|缺陷反馈]: QuantMatmul NZ 空输出、A4W4I 调度及 InplaceAdd yRef 约束问题”
19 天前 修改标题为 “[Bug-Report|缺陷反馈]: QuantMatmul NZ 空输出、A4W4I 调度及 InplaceAdd yRef 文档标记”,原标题为“[Bug-Report|缺陷反馈]: QuantMatmul NZ 空输出、A4W4I 调度及 InplaceAdd yRef 约束问题”
19 天前 修改了issue 的描述
18 天前 关闭了 issue
18 天前 添加了label:resolved
Describe the current behavior / 问题描述 (Mandatory / 必填)
源码检查发现以下问题:
aclnnQuantMatmulGetWorkspaceSizeCommonProcess对 NZ 格式只允许 m=0 的空输出,n=0 时仍会进入后续校验,导致合法空输出被拒绝。该公共路径涉及aclnnQuantMatmulV3、aclnnQuantMatmulV4和aclnnQuantMatmulWeightNz。SyncAll<false>,ASWPostTiling仅设置 BlockDim,未为该路径配置批调度。Cube BasicAPI/Mix 的IsCapable还会将内部 INT4 类型改为 INT8,因此不能使用转换后的内部类型判断是否需要批调度。这是源码分析发现的同步调度风险,尚未在 NPU 上复现死锁。aclnnQuantBatchMatmulInplaceAdd的参数表将 yRef 标记为支持非连续 Tensor,但原实现直接把 yRef 交给 l0 算子。本次将该栏改为-,保持原有处理逻辑。Environment Information / 环境信息 (Mandatory / 必填)
cann/ops-nnmaster,提交2c446e74cf94a4448c5e5612d2f94cec971ac27f。Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
以下为待在完整 CANN 环境执行的回归步骤,以及可直接核对的源码位置:
[4, 32],INT8 NZ x2 的逻辑 shape 为[32, 0]、storage shape 为[0, 2, 16, 32],x2Scale shape 为[1]、类型 UINT64,输出为 BF16[4, 0],transposeX1/transposeX2 均为 false。检查 GetWorkspaceSize 是否返回成功和 workspace=0。对应新增用例:QuantBatchMatmulWeightNzEmptyTensor.ZeroNReturnsEmptyOutputWithoutWorkspace;V3/V4 也补充了同类用例。adaptive_sliding_window_cube_basic_api_tiling.cpp和adaptive_sliding_window_tiling.cpp中的IsCapable/PostTiling:原始输入均为 INT4 且supportMmadS8S4=false时,内部类型会转换为 INT8,但 A4W4I 预处理仍需要跨核同步。检查该路径是否配置SetScheduleMode(1)。aclnn_quant_batch_matmul_inplace_add.cpp的 l0 调用,核对非连续支持声明与原实现是否一致。Describe the expected behavior / 预期结果 (Mandatory / 必填)
-,不额外增加连续性限制。Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
git diff --check upstream/master...backup:通过。Special notes for this issue/备注 (Optional / 选填)
修复范围为 NZ 空输出处理、A4W4I 批调度和相关接口资料。InplaceAdd 仅修正文档标记。
关联 PR:https://gitcode.com/cann/ops-nn/merge_requests/10659