已合并
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
已合并
wuyouqi1创建于 4月9日
已删除 :v2.9.0-issue146合入到Ascend/pytorchv2.9.0
wuyouqi1
wuyouqi1成员
4月9日

【合入来源】

如有社区issue,请关联issue链接> 请勿携带内部流程信息(需求链接、问题单、内部issue等)

【修改方案】

请描述修改内容的具体实现,涉及哪些组件之间进行交互,可以用1、2、3、...进行罗列

  1. torch_npu/csrc/aten/ops/op_api/CopyKernelOpApi.cppcopy_() 函数中添加 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]

likedislike
Pull Request已成功合入, 合并人@ascend-robot
(感谢 wuyouqi1 的贡献)
wuyouqi1wuyouqi1成员
4月9日 创建了 pull request,commit ee2ad958
ascend-robot
ascend-robot成员
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 /approve or /lgtm
  • Commenting /approve implies 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. 👍

likedislike
ascend-robotascend-robot成员
4月9日 添加了label:ascend-cla/yes
ascend-robot
ascend-robot成员
4月9日 评论:

问题/功能描述

本次PR旨在优化PyTorch中张量拷贝操作(copy_)的性能。在特定场景下,当源张量(src)为零张量时,原有的拷贝逻辑会执行不必要的底层计算。通过识别并优化此场景,可以提升框架的执行效率。

修改方案描述

修改方案的核心是在copy_操作的实现中增加一个前置条件检查。当检测到源张量(src)为零张量时,直接调用目标张量(self)的zero_()方法进行置零并立即返回,从而将一个潜在的跨设备或跨数据类型的拷贝操作,简化为一个更轻量的原地置零操作,实现了性能优化。该修改逻辑清晰,风险较低。

likedislike
此处折叠了53条消息 查看更多
huangyunlong成员
4月13日 评论:

/lgtm

likedislike
liujunzhu
liujunzhu成员
4月13日 评论:

/approve

likedislike
ascend-robotascend-robot成员
4月13日 添加了label:approvedlgtm
ascend-robot
ascend-robot成员
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.

likedislike
ascend-robotascend-robot成员
4月13日 合入了pull request