已开启
[Bug]: 使用 transfer_to_npu 时 torch.Stream.record_event 报错 "expected event to be a torch.Event object" #4433
wuyouqi1创建于  11 天前
wuyouqi1
wuyouqi1成员
11 天前 创建

在提交新问题之前,请确保您已经在社区中搜索过相关问题,并使用了社区中提供的资源/工具后,仍未找到满意的解决方式。

⚠️ 安全信息提醒:请仔细检查提供的文本内容,确保其不包含敏感数据信息,包括但不限于:

  • API 令牌或密钥
  • 密码或身份验证凭证
  • 私有网址或接口地址
  • 个人或机密数据
  • ...

在分享配置信息或代码示例时,请将敏感信息脱敏处理,或使用 <TOKEN> 等占位符替代原有内容。

环境信息

例如:
- 操作系统
- 昇腾硬件信息
- CANN软件版本
- 安装的对应软件版本
  • 操作系统: openEuler 24.03 LTS-SP3 (aarch64)
  • 昇腾硬件: Atlas 910B2
  • CANN: 9.2.0
  • torch: 2.13.0+cpu, torch_npu: 2.13.0rc2 (Python 3.10)

🐛 问题描述

import torch
from torch_npu.contrib import transfer_to_npu

e = torch.Event()
s = torch.Stream(torch.device("npu"))
s.record_event(e)
报错:
RuntimeError: expected event to be a torch.Event object
根因:torch 2.13 新增的 torch.Stream.record_event 在 C++ 侧以精确类型匹配校验入参(Py_TYPE(event) == THPEventClass,torch/csrc/Stream.cpp),拒绝子类实例;而 transfer_to_npu 将 torch.Event 替换为子类代理 _EventProxy(用于改写 device='cuda'→'npu'),导致校验失败。
期望行为:torch.Event() 创建的事件可正常传入 record_event。不使用 transfer_to_npu 时同样代码可正常执行。

欢迎加入社区,感谢您对社区的贡献 🎉!

likedislike
wuyouqi1wuyouqi1成员
11 天前 添加了label:bug
TorchNPU-BotTorchNPU-Bot成员
11 天前 添加了label:triage-review
TorchNPU-Bot
TorchNPU-Bot成员
11 天前 评论:

issue待分派,添加triage-review标签

likedislike
wuyouqi1wuyouqi1成员
11 天前 将 wuyouqi1 设为负责人
TorchNPU-BotTorchNPU-Bot成员
11 天前 添加了label:bot-triaged;删除了label:triage-review
TorchNPU-Bot
TorchNPU-Bot成员
11 天前 评论:

检测到当前 issue 已关联 PR,自动添加标签:bot-triaged

likedislike
Llouyujing
3 小时前 关联了pull request:fix: return base torch.Event from _EventProxy for record_event
Llouyujing
3 小时前 关联了pull request:fix: return base torch.Event from _EventProxy for record_event