已合并
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等)** - [ ] 需求 - [ ] 问题单 - [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)执行通过,代码检查无异常
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