You need to enable JavaScript to run this app.
导航

HPC-配置NCCL

最近更新时间2023.12.07 17:10:25

首次发布时间2022.10.12 11:55:29

本文介绍如何为高性能计算GPU实例手动配置NCCL,从而避免RDMA网络断链,影响业务正常运行。

NCCL简介

NCCL(Nvidia Collective Communication Library)是NVIDIA的集合通信库,可以在实例内或实例间实现多个GPU的快速通信。

操作步骤

CentOS 7.8/veLinux 1.0/Ubuntu 16.04

  1. 登录云服务器,具体操作请参见登录Linux实例
  2. 修改业务的超时时间和超时次数。
    1. 执行vim /etc/profile命令,打开/etc/profile文件。

      您也可以执行vim /etc/environmentvim ~/.bash_profilevim ~/.bashrc命令打开对应的配置文件进行如下配置。建议优先选择/etc/profile文件。

    2. i,进入编辑模式。

    3. 在/etc/profile文件末尾添加如下NCCL参数。

      export NCCL_IB_TIMEOUT=23
      export NCCL_IB_RETRY_CNT=7	
      
    4. Esc退出编辑模式,输入:wq并按下Enter键,保存并退出文件。

    5. 执行source /etc/profile命令,使配置更新生效。

Ubuntu 20.04

若您选用Ubuntu 20.04创建高性能计算GPU型实例,除上述操作外,您还需要额外进行以下操作。

  1. 运行以下脚本,初始化rdma-agent服务。

    #!/bin/bash
    wget http://rdma-config-beijing.tos-cn-beijing.ivolces.com/rdma-agent_1.0.2-0_all.deb
    dpkg -r rdma-agent
    dpkg -i rdma-agent_1.0.2-0_all.deb
    rm -f rdma-agent_1.0.2-0_all.deb
    cat > /etc/networkd-dispatcher/routable.d/50-ifup-hooks << EOF
    #!/bin/bash
    systemctl restart rdma-agent
    EOF
    chmod +x /etc/networkd-dispatcher/routable.d/50-ifup-hooks
    systemctl daemon-reload
    systemctl enable rdma-agent.service
    systemctl restart rdma-agent.service
    
  2. 修改Ubuntu镜像的IP配置为静态配置脚本,重启生效。

    #!/bin/bash
    ln -s /dev/null /etc/systemd/network/10-netplan-eth1.network
    ln -s /dev/null /etc/systemd/network/10-netplan-eth2.network
    ln -s /dev/null /etc/systemd/network/10-netplan-eth3.network
    ln -s /dev/null /etc/systemd/network/10-netplan-eth4.network
    
    systemctl restart systemd-networkd
    
  3. 在/etc/rc.local文件中添加网卡初始化dhclient配置。

    1. 执行以下命令,打开/etc/rc.local文件。
      vim /etc/rc.local

    2. i,进入编辑模式。

    3. 在配置文件中添加如下参数。

      dhclient eth1
      dhclient eth2
      dhclient eth3
      dhclient eth4
      
    4. Esc退出编辑模式,输入:wq并按下Enter键,保存并退出文件。

  4. 执行chmod 755 /etc/rc.local命令为/etc/rc.local添加执行权限。

结果验证

执行env | grep -i nccl命令,若返回结果包含如下信息,则配置成功。

NCCL_IB_TIMEOUT=23 
NCCL_IB_RETRY_CNT=7