云计算百科
云计算领域专业知识百科平台

超算中心海光异构卡dcu bw 64G显卡报错 nccl通讯错误,无法通过设置来解决的办法,需要安装shca IB卡驱动

超算中心海光异构卡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 ,然后计算的时候再添加如下参数测试

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

计算的时候再添加如下参数测试

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驱动(替代美国货)。
    • 装脚本+设变量:就是启用国产高速网卡,让多卡训练更快。

    原来的正确的环境变量

    # =======曙光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. 看硬件是否识别(最基础)

    lspci | grep -i infiniband
    lspci | grep -i shca

    • 有输出 = 识别到 IB 卡(shca 也是 IB 控制器)
    • 无输出 = 没识别到 IB 卡

    2. 看 IB 设备列表(更专业)

    ibv_devices

    • 输出有 shca_0、mlx5_0 之类 = 有 IB 卡
    • 提示 No devices found = 无 IB 卡

    二、再看:IB 卡状态 & 是否真的连上 IB 网络

    1. 最简命令:ibstat(必用)

    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 驱动)

    ibv_devinfo

    重点看:

    • hca_id: shca_0 → 就是你用的曙光国产 shca IB 卡
    • transport: InfiniBand → 确认是 IB 模式
    • port_state: ACTIVE → 端口正常

    三、看:IB 网络拓扑 & 同网络有哪些机器

    ibnetdiscover
    ibnodes

    • 能看到其他服务器的 GUID/名字 → IB 网络是通的
    • 只有自己 → 可能是孤立/没加入 IB 子网

    四、看:shca 驱动是否加载(对应你这边的环境)

    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 驱动

    第一步(装驱动)

    sudo bash mlxtoshca.sh

    第二步(启用 IB 通信)

    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 驱动

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 超算中心海光异构卡dcu bw 64G显卡报错 nccl通讯错误,无法通过设置来解决的办法,需要安装shca IB卡驱动
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!