已关闭
文档反馈-内容缺失或覆盖不全(完整性)-这里应该是true #1640
wangkai创建于  7 天前关闭于  3 天前
wangkai成员
7 天前 创建
  1. 【文档链接】

https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/latest/programug/Ascendcopdevg/docs/zh/guide/programming_guide/advanced_programming/ai_framework_adaptation/pytorch_framework.md

  1. 【页面标记】

// 运行资源申请,通过c10_npu::getCurrentNPUStream()的函数获取当前NPU上的流
auto aclStream = c10_npu::getCurrentNPUStream().stream(false);

  1. 【问题类型】

内容缺失或覆盖不全(完整性)

  1. 【问题描述】

这里应该是true

  1. 【预期结果】
  • 请填写预期结果
likedislike
wangkai成员
7 天前 评论:

https://gitcode.com/Ascend/torchair/blob/master/examples/_kernel_extension_aclgraph/torch_library/csrc/add_custom.asc

这里介绍了8种案例,上面文档的错误是方式4
// 如下介绍了自定义算子的8种内核启动方式:
// - 方式1(推荐): 直接传入NPUStream对象,调用<<<>>>时内部清queue
// - 方式2(正确): 使用stream(true)获取ACL stream对象,返回对象前清queue
// - 方式3(推荐): 使用stream(false)配合OpCommand,通过入queue方式同步
// - 方式4(错误): stream(false)直接启动,不清queue不入queue,可能乱序
// - 方式5(错误): NPUStream对象配合OpCommand,入queue后,queue中任务等待queue清空,导致死锁
// - 方式6(正确): 使用stream(true)清queue + OpCommand入queue
// - 方式7(错误): stream(true)清queue后,zeros_like算子入queue但自定义kernel不入queue,可能乱序
// - 方式8(正确): 使用stream()获取ACL stream,返回前等待queue内操作完成,与方式2等价

likedislike
zhangyujia77成员
7 天前 评论:

您好,感谢反馈,问题已确认。NPUStream::stream(false)只返回底层ACL stream,不会清空TorchNPU任务队列;随后直接使用<<<>>>下发Kernel时,可能和此前尚未出队的PyTorch任务发生乱序,产生静默精度错误。我们将尽快修复此问题。

likedislike
LLycheeeee成员
6 天前 将 zhangyujia77 设为负责人
Zzhangyujia77成员
6 天前 关联了pull request:fix: 修复PyTorch样例内核启动任务乱序风险
Zzhangyujia77成员
3 天前 issue状态由 进行中 改变为 已完成
Zzhangyujia77成员
3 天前 关闭了 issue
Zzhangyujia77成员
3 天前 添加了label:Accepted
CANN-robotCANN-robot成员
3 天前 添加了label:resolved