已关闭
[Bug-Report|缺陷反馈]: 推测op_common.cc复用资源逻辑问题,torch.distributed.all_to_all_single和MC2融合算子内(hccl.alltoallv)串行执行会有报错,反过来没问题问题,请帮忙定位 #165
Beau Howard创建于 6月25日关闭于 7月6日
6月25日 修改了issue 的描述
6月25日 修改标题为 “[Bug-Report|缺陷反馈]: 推测op_common.cc复用资源逻辑问题,torch.distributed.all_to_all_single和MC2融合算子内(hccl.alltoallv)串行执行会有报错,反过来没问题问题,请帮忙定位”,原标题为“[Bug-Report|缺陷反馈]: torch.distributed.all_to_all_single和MC2融合算子内(hccl.alltoallv)串行执行会有报错,反过来没问题问题,请帮忙定位”
6月25日 修改标题为 “[Bug-Report|缺陷反馈]: 推测op_common.cc复用资源逻辑问题,torch.distributed.all_to_all_single和MC2融合算子内(hccl.alltoallv)串行执行会有报错,反过来没问题问题,请帮忙定位”,原标题为“[Bug-Report|缺陷反馈]: torch.distributed.all_to_all_single和MC2融合算子内(hccl.alltoallv)串行执行会有报错,反过来没问题问题,请帮忙定位”
Beau Howard
6月26日 评论:
6月26日 评论:
[ERROR] RUNTIME(1556897,python3):2026-06-26-10:25:07.416.997 [ccu_device_error_proc.cc:170]1557042 MapFusionCcuErrorCodeForFastRecovery:fusion CCU Launch remote HBM UCE fault occurred: device_id=0, stream_id=61, task_id=90, retCode=550


7月6日 关闭了 issue
7月6日 issue状态由 待办的 改变为 已完成
Describe the current behavior / 问题描述 (Mandatory / 必填)
在同一进程、同一 HCCL 通信域下,
torch.distributed.all_to_all_single(eager 路径,经 ProcessGroupHCCL 走 CCU)与 MC2 融合算子(aclnnAlltoAllvQuantGroupedMatMul,kernel 侧 CCU)串行执行时,调用顺序决定是否报错:dist.all_to_all_single,后调融合算子 → 融合算子执行 aicore error(L1/MTE 内存错误,timeout or trap),报错位置在torch.npu.synchronize()dist.all_to_all_single→ 两者均正常日志关键差异:先调
all_to_all_single时,HCCL plog 中会出现Already have context, skip create日志(对应op_common.cc:889,TryReuseResource按algTag命中了前一次 eager 通信创建的 CCU 资源缓存),反过来则没有此日志且不报错。推测原因:eager
dist.all_to_all_single执行后,通过HcclEngineCtxCreate(algTag, CCU)缓存了 CCU 资源上下文(包含 CCL Buffer 布局、CCU 指令序列等)。后续融合算子在分配 CCU 资源时(HcclAllocComResourceByTilingV2或GetOrCreateContext),由于 CCL Buffer 和 CCU 硬件状态(PFE 路由表等)已被 eager 路径按自身通信量编程,融合算子假设的是干净的初始状态,没有清理机制,导致 buffer 越界或路由错误。反过来时,融合算子先在干净状态下执行,eager 路径后执行时ShouldGoCcuFastLaunch/TryReuseResource未命中,从头创建全新 CCU 资源,能覆盖旧状态,所以正常。Environment / 环境信息 (Mandatory / 必填)
950
x86
evb 2P
Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
最小复现代码
import torch import torch_npu import torch.distributed as dist # 1. 初始化 HCCL 通信域(只初始化一次) dist.init_process_group(backend='hccl', rank=rank, world_size=world_size, init_method=...) # 2. 准备通信数据(MX 场景最易复现,eager 传 packed x+scale,融合算子仅传 x) # 详见 mc2_test/op_class/aclnnAlltoAllvQuantGroupedMatMul.py # ===== 报错路径:先 eager 后融合 ===== # Step A: eager all_to_all_single(CCU 路径) dist.all_to_all_single(output_tensor, input=input_tensor, output_split_sizes=..., input_split_sizes=...) # Step B: MC2 融合算子(CCU kernel 侧) # 内部调用 aclnnAlltoAllvQuantGroupedMatMul output = torch_npu.npu_alltoallv_quant_gmm(gmm_x, gmm_weight, ...) # → RuntimeError: npuSynchronizeDevice error code 507916 # → aicore error: l1 error info, mte error info, timeout or trap # ===== 正常路径:先融合后 eager ===== # Step A: MC2 融合算子(在干净 CCU 状态下执行) output = torch_npu.npu_alltoallv_quant_gmm(gmm_x, gmm_weight, ...) # → 正常 # Step B: eager all_to_all_single(TryReuseResource 未命中,从头创建 CCU 资源) dist.all_to_all_single(output_tensor, input=input_tensor, ...) # → 正常Describe the expected behavior / 预期结果 (Mandatory / 必填)
同一 HcclComm 下,eager
dist.all_to_all_single和 MC2 融合算子的 CCU alltoallv 应能串行执行而不报错,无论调用顺序如何Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
正常日志(先融合后 eager)
日志对比结论
Special notes for this issue/备注 (Optional / 选填)
是否有办法在 Python 层(或在融合算子 tiling 阶段)清理/重置 CCU 缓存和 PFE 表,确保融合算子执行时 CCU 硬件状态是干净的?