本文介绍如何为高性能计算GPU实例手动配置NCCL,从而避免RDMA网络断链,影响业务正常运行。
NCCL(Nvidia Collective Communication Library)是NVIDIA的集合通信库,可以在实例内或实例间实现多个GPU的快速通信。
CentOS 7.8/veLinux 1.0/Ubuntu 16.04
执行vim /etc/profile
命令,打开/etc/profile文件。
您也可以执行
vim /etc/environment
、vim ~/.bash_profile
或vim ~/.bashrc
命令打开对应的配置文件进行如下配置。建议优先选择/etc/profile文件。
按i
,进入编辑模式。
在/etc/profile文件末尾添加如下NCCL参数。
export NCCL_IB_TIMEOUT=23 export NCCL_IB_RETRY_CNT=7
按Esc
退出编辑模式,输入:wq
并按下Enter
键,保存并退出文件。
执行source /etc/profile
命令,使配置更新生效。
Ubuntu 20.04
若您选用Ubuntu 20.04创建高性能计算GPU型实例,除上述操作外,您还需要额外进行以下操作。
运行以下脚本,初始化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
修改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
在/etc/rc.local文件中添加网卡初始化dhclient配置。
执行以下命令,打开/etc/rc.local文件。vim /etc/rc.local
按i
,进入编辑模式。
在配置文件中添加如下参数。
dhclient eth1 dhclient eth2 dhclient eth3 dhclient eth4
按Esc
退出编辑模式,输入:wq
并按下Enter
键,保存并退出文件。
执行chmod 755 /etc/rc.local
命令为/etc/rc.local添加执行权限。
执行env | grep -i nccl
命令,若返回结果包含如下信息,则配置成功。
NCCL_IB_TIMEOUT=23 NCCL_IB_RETRY_CNT=7