已关闭
[Bug] DVM Spec fallback 未使用 load 导致 clone 索引错位和段错误 #4124
SorryNaCN创建于  15 天前关闭于  13 天前
SorryNaCN
SorryNaCN成员
15 天前 创建

问题描述

TorchBench pytorch_stargan 使用 DVM 后端时,融合核 dvm_fused_copy__mean_0 在 codegen 阶段触发段错误。该融合核包含 copy_ + reshape + reduce/mean

根因

DVM SpecVector::FallCodeGen() 在 Spec fallback 中跳过未被后续计算消费的 load,但原实现仍通过 push_back 保存后续 clone,导致 clones_ 槽位与原始 NDObject::index_ 不再对应。后续 Reduce clone 按原始 index 取值时会读取非法指针并触发 SIGSEGV。

修改方案

  • DVM fallback clone 数组按原始图节点数量初始化,并按原始节点 index 写入 clone,保留未使用 load 形成的索引空洞;
  • 增加 load + 未使用 load + reshape + reduce + spec_next + div + store 回归用例;
  • 基于 CANN 9.1.0-beta.3 刷新 DVM r2.10 prebuild;
  • 将 PyTorch v2.7.1v2.9.0v2.10.0v2.11.0v2.12.0master 的 DVM gitlink 更新到 r2.10@6e86795f3ce6832c72e7558454d7bb0864d2688e

上游修改

验证结果

  • 修复前纯 DVM 回归用例在 Tester.codegen() 触发 SIGSEGV,pytest 退出码为 139;
  • 修复后 test_spec_vector.py + test_clone.py 共 40 passed;
  • CANN 9.1.0-beta.3 prebuild 生成及 make PRE_ASCEND=1 -j8 构建通过;
  • 910B3 单卡回归 test_spec_fall_clone_after_unused_load 结果为 1 passed。
likedislike
SorryNaCNSorryNaCN成员
15 天前 添加了label:bug
SorryNaCNSorryNaCN成员
15 天前 关联了看板:FrameworkPTAdapter 版本issue看板
TorchNPU-BotTorchNPU-Bot成员
15 天前 添加了label:triage-review
TorchNPU-BotTorchNPU-Bot成员
15 天前 添加了label:bot-triaged;删除了label:triage-review
TorchNPU-Bot
TorchNPU-Bot成员
15 天前 评论:

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

likedislike
ascend-robotascend-robot成员
13 天前 关闭了 issue
ascend-robotascend-robot成员
13 天前 添加了label:resolved