超算中心海光异构卡dcu bw 64G显卡报错 无法通过设置来解决,通过新增服务器跳过显卡
flash_attn: disabled HOSTQUEUE <0x1921b670>: >>>>>>>> DUMP KERNEL ARGS: size: 160 <<<<<<<<<
00 40 83 00 00 00 00 00 00 00 90 01 00 00 00 00
00 40 83 00 00 00 00 00 00 00 b4 4e e1 7f 00 00
00 00 b4 4e e1 7f 00 00 00 00 60 d0 d6 7f 00 00
00 80 6f 31 e2 7f 00 00 00 00 80 3f 00 00 00 00
00 14 00 00 01 00 00 00 00 14 00 00 01 00 00 00
00 14 00 00 01 00 00 00 00 14 00 00 01 00 00 00
00 14 00 00 90 06 00 00 01 00 00 00 00 14 00 00
00 00 00 00 14 00 00 00 07 00 00 00 00 00 00 00
07 00 00 00 93 24 49 12 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
HOSTQUEUE <0x1921b670>: >>>>>>>> DUMP KERNEL ARGS PTR INFO <<<<<<<<<
HOSTQUEUE <0x1921b670>: ptr arg index: 3, ptr: 0x7fe14eb40000
HOSTQUEUE <0x1921b670>: origin ptr: 0x7fe14d200000, size byte: 113246208
HOSTQUEUE <0x1921b670>: ptr arg index: 4, ptr: 0x7fe14eb40000
HOSTQUEUE <0x1921b670>: origin ptr: 0x7fe14d200000, size byte: 113246208
HOSTQUEUE <0x1921b670>: ptr arg index: 5, ptr: 0x7fd6d0600000
HOSTQUEUE <0x1921b670>: origin ptr: 0x7fd6d0600000, size byte: 52428800
HOSTQUEUE <0x1921b670>: ptr arg index: 6, ptr: 0x7fe2316f8000
HOSTQUEUE <0x1921b670>: origin ptr: 0x7fe22ec00000, size byte: 88080384
HOSTQUEUE <0x1921b670>: >>>>>>>> DUMP AQL 0x7fe93e825000 PACKET WITH INDEX 217545 <<<<<<<<<
HOSTQUEUE <0x1921b670>: >>>>>>>> MATCH KERNEL COMMAND <<<<<<<<<
HOSTQUEUE <0x1921b670>: header: 0xb02
HOSTQUEUE <0x1921b670>: setup: 3
HOSTQUEUE <0x1921b670>: workgroup: x:256, y:1, z:1
HOSTQUEUE <0x1921b670>: grid: x:2150400, y:1, z:1
HOSTQUEUE <0x1921b670>: group_segment_size: 6144
HOSTQUEUE <0x1921b670>: private_segment_size: 0
HOSTQUEUE <0x1921b670>: completion_signal: 0x0
HOSTQUEUE <0x1921b670>: kernel_object: 0x7fe4a82424c0
HOSTQUEUE <0x1921b670>: device id: 0
Invalid address access: 0x7fde7654c000, Error code: 3.
KERNEL VMFault !!! <<<<<<
PID: 6011, SIGNAL: 0 !!! <<<<<<
还是一样
双卡提示ncll 错误
原因,问了客服
问遍 几乎所有ai ,都没有找到正确答案:
claude gmini gpt doubao kimi
客服回答
老师您好,看到您使用的是113组,该组资源使用的是shca IB卡 ,需要安装下插件,目前在您/public/home/aaaa/IB 路径放了脚本,您后续在notebook中使用root权限运行下bash mlxtoshca.sh ,然后计算的时候再添加如下参数测试下
export GLOO_SOCKET_IFNAME="eth0"
export NCCL_SOCKET_IFNAME="eth0"
export NCCL_IB_HCA=shca_0:1,shca_1:1,shca_2:1,shca_3:1
export HSA_FORCE_FINE_GRAIN_PCIE=1
export NCCL_IB_DISABLE=0
export NCCL_NET_PLUGIN=shca
export NCCL_DEBUG=INFO
解决方法1,笨办法(临时办法不建议)

方法二 ,安装shca IB卡驱动
老师您好,看到您使用的是113组,该组资源使用的是shca IB卡 ,需要安装下插件,目前在您/public/home/aaaa/IB 路径放了脚本,您后续在notebook中使用root权限运行下bash mlxtoshca.sh ,然后计算的时候再添加如下参数测试
下
bash
apt-get update -y \
&& apt remove -y rdmacm-utils || true \
&& apt remove -y ibacm || true \
&& apt remove -y perftest || true \
&& apt remove -y ibverbs-utils || true \
&& apt remove -y ucx || true \
&& apt remove -y libibverbs-dev || true \
&& apt remove -y libibmad-dev || true \
&& apt remove -y libibumad-dev || true \
&& apt remove -y librdmacm1 || true \
&& apt remove -y infiniband-diags || true \
&& apt remove -y opensm || true \
&& apt remove -y rdma-core || true \
&& apt remove -y libibmad5 || true \
&& apt remove -y libibumad3 || true \
&& apt remove -y ibverbs-providers || true \
&& apt remove -y libibverbs1 || true \
&& apt install -y libmosquitto1 || true \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& dpkg -i shca-tools_2.500.4.B059-Ubuntu22.04_amd64.deb
计算的时候再添加如下参数测试
bash
export GLOO_SOCKET_IFNAME="eth0"
export NCCL_SOCKET_IFNAME="eth0"
export NCCL_IB_HCA=shca_0:1,shca_1:1,shca_2:1,shca_3:1
export HSA_FORCE_FINE_GRAIN_PCIE=1
export NCCL_IB_DISABLE=0
export NCCL_NET_PLUGIN=shca
export NCCL_DEBUG=INFO
shca ib卡背景知识
我用大白话给你拆开讲,不搞技术黑话。
一、什么是「海光异构卡BW 64G」?
- 海光:国产芯片公司,做国产GPU/AI加速卡,对标英伟达A100/H100。
- 异构卡(DCU/BW) :就是国产GPU,专门用来跑AI训练、大模型、科学计算。
- BW1000 :海光深算三号,型号叫BW,64G 是指它自带64GB 高速显存(HBM2e)。
- 一句话:你用的是国产高端AI显卡,64G显存,性能接近英伟达A100。
二、什么是「shca IB卡」?
1. IB 是什么?
- IB = InfiniBand :一种超高速、低延迟的专用网络 ,专门用在超算、AI集群里,让很多张GPU卡/服务器之间飞快地互相传数据。
- 普通网卡(以太网)像普通公路 ;IB卡像高铁专线,速度快几十倍、延迟极低。
2. shca 是什么?
- shca :是曙光自研的国产IB驱动/插件的名字(可以理解为:国产版IB驱动)。
- 因为美国限制,不能用英伟达(Mellanox)的IB卡,曙光就自己做了国产IB网卡+驱动 ,名字叫shca。
3. 合起来:shca IB卡
- 就是:曙光国产高速互联网卡(替代英伟达IB卡),专门给海光BW卡集群做高速通信用。
- 作用:让多张海光BW卡之间高速互联,跑大模型多卡训练时更快、不卡。
三、他让你做的事,本质是啥?
老师的意思是:
你用的113组机器,配的是曙光国产shca IB高速网卡 ;
要用好这张高速网卡、发挥多卡性能,必须:
- 先装shca驱动插件(他给的脚本);
- 再设几个环境变量,告诉系统:"用shca IB卡通信,别用普通网卡"。
四、极简总结(记这几句就行)
- 海光BW 64G:国产AI显卡,64G显存,用来跑大模型。
- IB卡:高速专用网卡(像高铁),多卡/多机通信用。
- shca:曙光国产IB驱动(替代美国货)。
- 装脚本+设变量 :就是启用国产高速网卡,让多卡训练更快。
原来的正确的环境变量
bash
# =======曙光BW 2卡DCU 100小时稳定训练【无报错版】 =======
# ===== 超算中心 老是报错 可以 ,换2个显卡 ====
# NCCL 内部通信错误
# export NCCL_IGNORE_DISABLED_P2P=1
# export NCCL_P2P_DISABLE=1
# 1. 禁用可能存在 Bug 的加速算子库
export ROC_BLAS_USE_HIPBLASLT=0
# 2. 强制同步执行,防止异步内存访问越界(虽然慢,但能保命)
export HIP_LAUNCH_BLOCKING=1
# 3. 限制 MIOpen 算子,防止在卷积或矩阵运算时出现段错误
export MIOPEN_DEBUG_DISABLE_CUDNN_COMPAT=1
# 不必删除 checkpoint-2500的global_step,否则我启动不了
# gfx936 不一定需要
export HSA_OVERRIDE_GFX_VERSION="9.3.6"
# unset HSA_OVERRIDE_GFX_VERSION
# 设置NCCL环境变量
# 4. 彻底禁用 P2P 通信,防止单卡模式下误触通信 Bug
export NCCL_P2P_DISABLE=1 # 海光DCU必须开!不开直接卡
export NCCL_BLOCKING_WAIT=1 # 防止卡死
export NCCL_ASYNC_ERROR_HANDLING=1 # 防止通信崩溃
export RCCL_P2P_DISABLE=1
# 超算BW禁用IB远程通信,避免分布式训练网络报错
export NCCL_IB_DISABLE=1
# 指定NCCL使用本地回环网卡lo,双卡本机通信最稳定
# 本地双卡 不能用网卡
export NCCL_SOCKET_IFNAME=lo
# 开启NCCL异步错误处理,防止通信卡死导致节点失败
export NCCL_ASYNC_ERROR_HANDLING=1
# NCCL超长超时(100小时),避免慢节点中断
export NCCL_TIMEOUT=3600000
# 修复 ROCm 显存碎片
# 我直接给你深算 3 号 Z100 (gfx928) 专用、100% 能跑的最终版
# 海光DCU不支持expandable_segments,只保留max_split_size_mb防止显存碎片
# 但需要注意,海光环境有时对 expandable_segments 支持有 Bug。如果显存端也出现无故 OOM,可以尝试将其简化为 export PYTORCH_HIP_ALLOC_CONF="garbage_collection_threshold:0.8"
# export PYTORCH_HIP_ALLOC_CONF="expandable_segments:True,garbage_collection_threshold:0.8"
# export PYTORCH_HIP_ALLOC_CONF="garbage_collection_threshold:0.8"
# 建议修改这一行
export PYTORCH_HIP_ALLOC_CONF="max_split_size_mb:128,garbage_collection_threshold:0.8"
# 关闭MIOPEN确定性计算,减少内存占用、提速
export MIOPEN_DEBUG_CONVOLUTION_DETERMINISTIC=0
# 关闭MIOPEN冗余日志,避免缓冲区占满内存
export MIOPEN_LOG_LEVEL=1
# 指定使用2张DCU显卡
export HIP_VISIBLE_DEVICES=0,1
export ROCM_VISIBLE_DEVICES=0,1
unset CUDA_VISIBLE_DEVICES
# DCU兼容性必须设置,解决算子崩溃/显存泄漏
# export HSA_OVERRIDE_GFX_VERSION=10.3.0 pytorch不支持
# 关闭CuDNN,防止DCU环境不兼容
export Torch_USE_CUDNN=0
查看ib网络
下面给你一套直接复制就能用、最常用、最准的排查方法 (在你这台海光BW服务器上,root 或 sudo 执行)。
一、先看:服务器有没有 IB 卡(shca/InfiniBand)
1. 看硬件是否识别(最基础)
bash
lspci | grep -i infiniband
lspci | grep -i shca
- 有输出 = 识别到 IB 卡(shca 也是 IB 控制器)
- 无输出 = 没识别到 IB 卡
2. 看 IB 设备列表(更专业)
bash
ibv_devices
- 输出有
shca_0、mlx5_0之类 = 有 IB 卡 - 提示
No devices found= 无 IB 卡
二、再看:IB 卡状态 & 是否真的连上 IB 网络
1. 最简命令:ibstat(必用)
bash
ibstat
看关键行:
State: Active
Physical state: LinkUp
Rate: 100 or 200 Gb/s
- State: Active + LinkUp = IB 卡正常、网线连上、IB网络正常
- State: Down / Polling = 没连上 IB 网络(线没插/交换机没起来/没权限)
- Rate: 100G/200G = 高速 IB;普通光纤以太网不会有这个
2. 看详细信息(含 shca 驱动)
bash
ibv_devinfo
重点看:
hca_id: shca_0→ 就是你用的曙光国产 shca IB 卡transport: InfiniBand→ 确认是 IB 模式port_state: ACTIVE→ 端口正常
三、看:IB 网络拓扑 & 同网络有哪些机器
bash
ibnetdiscover
ibnodes
- 能看到其他服务器的 GUID/名字 → IB 网络是通的
- 只有自己 → 可能是孤立/没加入 IB 子网
四、看:shca 驱动是否加载(对应你这边的环境)
bash
lsmod | grep shca
- 有输出 → shca 驱动已加载(老师让你装的那个)
- 无输出 → 没装/没加载,需要跑
mlxtoshca.sh
五、最精简总结(你只要记这几条)
- 有没有 IB 卡 :
lspci | grep -i infiniband - 是不是 shca IB 卡 :
ibv_devices看有没有shca_0 - IB 卡是否正常联网 :
ibstat看Active + LinkUp - shca 驱动是否装好 :
lsmod | grep shca
那如果没有安装驱动的情况下呢
我用最简单、最直白 的方式告诉你:
没装 IB / shca 驱动时,你看到的结果是什么样?
以及 为什么必须装驱动才能用 IB 高速网络。
一、没装驱动时,你执行命令会看到什么?
1. ibv_devices
No IB devices found
意思:系统看不到 IB 卡(因为驱动没装,不认硬件)
2. ibstat
Command not found
或者
no device found
3. lspci | grep -i infiniband
可能能看到卡,但系统不知道它是 IB 卡
就像你插了显卡,但没装显卡驱动,只能当亮机卡用。
4. lsmod | grep shca
什么都不输出
= 驱动没加载、没安装
二、没装驱动 = IB 卡完全不能用
重点来了:
IB 卡 ≠ 普通网卡
普通以太网(光纤/电口)操作系统自带驱动,插上就能用。
但:
IB 卡(包括 shca 国产 IB)必须装专用驱动才能工作
没驱动 = IB 卡是死的,不会工作,不会联网,不会加速
三、没装驱动时,你的多卡训练会怎样?
你用的是 海光BW 64G 异构卡
如果 没装 shca 驱动:
- 系统不会使用 IB 高速网络
- 自动 fallback 到 普通以太网(光纤)
- 多卡训练速度 慢 5~20 倍
- 大模型根本跑不起来
- 出现 慢、卡、通信超时
一句话:
没驱动 = IB 高速网卡形同虚设
--
四、你现在必须做的(就两步)
老师给你的操作,本质就是装 shca IB 驱动
第一步(装驱动)
bash
sudo bash mlxtoshca.sh
第二步(启用 IB 通信)
bash
export GLOO_SOCKET_IFNAME="eth0"
export NCCL_SOCKET_IFNAME="eth0"
export NCCL_IB_HCA=shca_0:1,shca_1:1,shca_2:1,shca_3:1
export HSA_FORCE_FINE_GRAIN_PCIE=1
export NCCL_IB_DISABLE=0
export NCCL_NET_PLUGIN=shca
export NCCL_DEBUG=INFO
五、装完驱动后,你会看到什么(成功标志)
1. ibv_devices
shca_0
shca_1
shca_2
shca_3
2. ibstat
State: Active
Physical state: LinkUp
3. lsmod | grep shca
能看到驱动正在运行
看到这些 = IB 卡正常工作,可以跑高速训练
超级大白话总结
- 没装驱动:IB 卡看不见、用不了、训练很慢
- 装了驱动:IB 卡变成高铁,多卡训练飞快
- 你现在的服务器必须装 shca 驱动