已合并
fix(npu): register QuantizedPrivateUse1 view/ravel/flatten for test_view_ops. #36700
Margaret_wangrui创建于 5月26日
fix(npu): register QuantizedPrivateUse1 view/ravel/flatten for test_view_ops. #36700
已合并
Pull Request已成功合入, 合并人@ascend-robot
(感谢 Margaret_wangrui 的贡献)5月26日 创建了 pull request,commit d03ddaa2
5月26日 关联了issue:torch_npu 未实现量化tensor的aten::view算子
ascend-robot
5月26日 评论:
5月26日 评论:
ascend-robot
5月26日 评论:
5月26日 评论:
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 |
|---|---|---|
| repo-Ascend/pytorch | ✅ wangmin0104, liangsongwei (2/2) | ✅ wangmin0104 (1/1) |
| test | ✅ wangmin0104, liangsongwei (2/2) | ✅ wangmin0104 (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
Margaret_wangrui, thanks for your pull request. All authors of the commits have signed the CLA. 👍


5月26日 添加了label:ascend-cla/yes
此处折叠了90条消息 查看更多
5月30日 添加了label:approved
梁松伟
5月30日 评论:
5月30日 评论:
/lgtm


5月30日 添加了label:lgtm
5月30日 合入了pull request
ascend-robot
5月30日 评论:
5月30日 评论:
流水线 pytorch_gitcode_PR_multiVersion#9730 [ commitID:969df520 ] 已完成


【合入来源】
https://gitcode.com/Ascend/pytorch/issues/2082
问题简述: 将 PyTorch 上游
test/test_view_ops.py切换到 torch_npu 执行时,test_ravel_npu、test_flatten_npu在处理torch._empty_affine_quantized(..., quint8, device=npu)量化张量时报错:浮点 NPU 张量(
PrivateUse1)可正常view;量化 NPU 张量(QuantizedPrivateUse1)缺少对应 kernel 注册。【修改方案】
本 PR 为 QuantizedPrivateUse1 补齐 shape / copy 相关 dispatch,并与 op-plugin stride_copy 修复配合,使量化 NPU 张量上的
view/ravel/flatten语义与上游用例一致。组件交互关系:
具体实现:
torch_npu/csrc/aten/common/TensorShape.cpp(+312 行)TORCH_LIBRARY_IMPL(aten, QuantizedPrivateUse1, m)注册:view、as_strided、ravel、contiguous、clone、empty_like、empty.memory_format、empty_strided、_copy_from。npu_quantized_view_symint:基于infer_size+computeStride,经alias_with_sizes_and_strides_npu构造QTensorImplview;stride 不兼容且可展平为 rank-1 时走clone+view。npu_quantized_ravel:aten::contiguous→view(-1),避免 composite reshape 在 NPU 量化张量上短路。npu_quantized_contiguous:除is_contiguous()外检查行主 stride,必要时clone物化。npu_quantized_view_materialize_if_storage_desc_mismatch:当MetaDataAreMatch(q)==false时对 view 结果clone(Contiguous)。NPUNativeFunctions::as_strided增加量化分支,构造QTensorImplview。torch_npu/csrc/aten/common/TensorFactories.cpp(+202 行)NPUNativeFunctions::clone量化路径:empty_like+SetDesc+int_reprstride_copy。MetaDataAreMatch异常(如 transpose、view 后 storage desc 不一致)时,CPU int_repr staging + H2D 物化。npu_quantized_clone_write_int_repr_payload)。test/test_view_ops.pyflat._base is src(允许 NPUStorageDesc 不匹配时的物化拷贝路径)。is_quantized/is_npu为属性访问(非可调用方法)。变更规模:
【资料变更】
不涉及。
【接口变更】
不涉及跨代码仓或客户面可见的公开 API 变更。
内部说明(ATen dispatch 层,非 Python 公开接口):
view/as_strided/ravel/contiguous/cloneQuantizedPrivateUse1empty_like/empty.memory_format/empty_strided/_copy_fromQuantizedPrivateUse1用户可见行为变化:NPU 上
quint8等量化张量可正常执行view、ravel、flatten(此前为NotImplementedError)。【功能验证】
环境要求: 已编译安装 torch_npu;NPU 设备可用。
测试步骤:
python test/test_view_ops.py -v -k test_ravel_npu python test/test_view_ops.py -v -k test_flatten_npu覆盖场景:
5×5×5×5ravel()/flatten(0,-1)与view(-1)一致0×2×3、3×0×2nc=True)contiguous().view(-1)与ravel()一致(0,2)、(1,2)、(-2,-1)等与view(-1)展开顺序一致UT 看护:
自验证: 请在合入前补充 NPU 环境执行上述命令的通过截图或 CI 流水线链接。
【CheckList】