已合并
fix: handle zero tensor src to avoid null pointer in aclrtMemcpy #33383
wuyouqi1创建于 4月9日
fix: handle zero tensor src to avoid null pointer in aclrtMemcpy #33383
已合并
从已删除 :v2.9.0-issue146合入到Ascend/pytorchv2.9.0
wuyouqi1成员
4月9日
4月9日
# 【合入来源】
> **如有社区issue,请关联issue链接**> **请勿携带内部流程信息(需求链接、问题单、内部issue等)**
- [ ] 需求
- [ ] 问题单
- [x] issue/工单
- [ ] 重构优化
- [ ] 资料更新
# 【修改方案】
> 请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列
1. 在 `torch_npu/csrc/aten/ops/op_api/CopyKernelOpApi.cpp` 的 `copy_()` 函数中添加 `src._is_zerotensor()` 检查
2. 当 src 为 ZeroTensor(惰性零张量,`data_ptr()` 为 null)时,直接调用 `self.zero_()` 而不走 `aclrtMemcpy`,避免 null 指针传入触发 error code 100000
3. 与 PyTorch 原生 `aten/src/ATen/native/Copy.cpp` 中的 `_is_zerotensor()` 处理保持一致
根因:`_efficientzerotensor` 算子 NPU 未实现回退 CPU,CPU 侧使用 `ZeroTensorAllocator` 创建惰性零张量不分配实际内存,`data_ptr()` 为 null,`copy_()` 直接调用 `aclrtMemcpy` 时传入 null src 指针报错。
# 【资料变更】
> 请确认是否涉及资料变更。如涉及,需要在PR中体现,并简要说明修改内容。如不涉及,需填写不涉及
不涉及
# 【接口变更】
> 请确认是否涉及跨代码仓或者客户面可见的接口变更。如涉及,需要详细说明接口以及对应的变更内容,同时需要在资料中体现。如不涉及,需填写不涉及
不涉及
# 【功能验证】
> 说明测试场景,测试方法。如果本次测试方式与常规单元测试不同,请详细说明您的测试步骤
1. 测试用例:`test_linearize_composition_grad_npu_float32`
2. 测试命令:`python test_eager_transforms.py -v -k test_linearize_composition_grad_npu_float32`
3. 验证结果:PASSED(修复前报 RuntimeError: aclrtMemcpy error code 100000)
# 【CheckList】
> PR提交人对以下CheckList自检项进行全量自检,自检通过或不涉及,均修改 [ ] 为 [x]
- [x] 代码注释完备,正确记录错误日志
- [x] 代码实现进行了返回值、空指针等校验
- [x] PR标题正确使用类型标签,如:feat、fix、refactor、docs、test等
- [x] PR持续集成流水线(CI)执行通过,代码检查无异常


Pull Request已成功合入, 合并人@ascend-robot
(感谢 wuyouqi1 的贡献)ascend-robot
4月9日 评论:
4月9日 评论:
ascend-robot
4月9日 评论:
4月9日 评论:
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 | ✅ liujunzhu, huangyunlong2022 (2/2) | ✅ liujunzhu (1/1) |
| test | ✅ liujunzhu, huangyunlong2022 (2/2) | ✅ liujunzhu (1/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
weixin_47897441, thanks for your pull request. All authors of the commits have signed the CLA. 👍


4月9日 添加了label:ascend-cla/yes
ascend-robot
4月9日 评论:
4月9日 评论:
此处折叠了53条消息 查看更多
huangyunlong
4月13日 评论:
4月13日 评论:
/lgtm


liujunzhu
4月13日 评论:
4月13日 评论:
/approve


4月13日 添加了label:approvedlgtm
ascend-robot
4月13日 评论:
4月13日 评论:
Review Guide
This pull-request passes review.
Committers who wrote a comment of /approve are: liujunzhu.
Reviewers who wrote a comment of /lgtm are: liujunzhu, huangyunlong2022.


4月13日 合入了pull request