已关闭
[Bug-Report|缺陷反馈]: DRCO模式下值依赖算子控制流缺少同步导致aicore error(MTE越界) #3182
wan_jianfen创建于 8月31日关闭于 9月1日
8月31日 将 wan_jianfen 设为负责人
8月31日 issue类型由 任务 改变为 缺陷
8月31日 issue状态由 待办的 改变为 修复中
8月31日 添加了label:Machine
8月31日 关联了看板:PyPTO
wan_jianfen
8月31日 评论:
8月31日 评论:
修改中


Wwan_jianfen
8月31日 关联了pull request:fix(machine): Add aicore-entry syncFlag handshake for DRCO value-depend ops
8月31日 关联了pull request:fix(machine): Add aicore-entry syncFlag handshake for DRCO value-depend ops
9月1日 issue状态由 修复中 改变为 已完成
9月1日 关闭了 issue
Describe the current behavior / 问题描述 (Mandatory / 必填)
DRCO 模式(
ENABLE_AICORE_RESOLVE=true)下,值依赖(value-depend)算子的控制流 AICPU 与输入 tensor 的生产者算子之间缺少同步机制,导致控制流读到旧数据、生成错误的循环边界/地址偏移,最终触发 aicore error(MTE DDR 地址越界,error code 263/95)。具体机理:
ssm_state_indices由流上randperm→to(int32)生产)的控制流在 AICPU 上通过SetExprBatch/GetInputData直接读 tensor 数据求值 exprTbl;GetPackedGmAddr/TStoreVec访问越界;WaitAicoreStart在ENABLE_AICORE_RESOLVE下被空操作化,且 DRCO 模式无 sched AICPU 握手置位 syncFlag,device 侧等待机制完全缺失。注:#2227 已修复非 DRCO 路径的 value depend sync flag miss(补充
WaitAicoreStart发射),但 DRCO 模式下等待被空操作化、无置位者,属于该修复遗漏的场景。Environment / 环境信息 (Mandatory / 必填)
ENABLE_AICORE_RESOLVE)Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
export ENABLE_AICORE_RESOLVE=true cd pypto-gym python3 tests/ops/ling_3_0_flash/fused_recurrent_kda/test_fused_recurrent_kda.py # case 36 inplace_stress_N1024_bf16(脚本已裁剪为仅跑该 case)randn/randperm在算子流上生产输入,runcase精度校验通过后,首个 warmup launch 即触发崩溃(约 56 个 AIV core 的首个主块任务同时崩);Describe the expected behavior / 预期结果 (Mandatory / 必填)
DRCO 模式下值依赖控制流应等待 AICore kernel 启动(其本身排在流上生产者算子之后)后再读输入 tensor 数据,全部 launch 精度校验通过,无 aicore error。
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
崩溃 PC 固定映射至
GetPackedGmAddr→TStoreVec(写 [?,?,128,128] fp32 state tile),AICore 执行时 ssm_state_indices 内容合法(如 sn=709),但 AICPU 早前求值的 exprTbl[32] 为旧 fp32 randn 数据的位模式(≈0.45),证明竞争窗口在读侧。Special notes for this issue/备注 (Optional / 选填)
修复方案见 PR !5810:AICore entry core0 获取 blockIdx 与 ring base 后立即置
syncFlag=1(AICore kernel 排在生产者算子之后,置位即数据就绪);kernel exit 推进indexFinished前清syncFlag=0(AllocateWait/Full门保证槽复用前必然清零);ctrlInitDyn在 aicore-resolve 下不再 reset(消除 launch-early 下 reset-after-set 竞争);恢复WaitAicoreStart自旋等待。已验证 DRCO/非 DRCO 精度全过。