為進一步優化神龍架構GPU服務器的網絡性能,阿里云推出了GPU計算型超級計算集群實例規格族,即sccgn系列實例,該系列機型具備了超強的計算能力和網絡通信能力。本文為您介紹sccgn系列實例的使用說明及性能驗證。
使用說明
sccgn系列機型同時配備了GPU計算卡和Mellanox高性能網卡,具備超強的計算能力和網絡通信能力。適用于如深度學習、高性能計算等高強度計算和密集通信兼備的應用場景。使用sccgn系列實例的幾點說明:
如果您只需使用RDMA功能,在創建sccgn系列實例(例如sccgn7ex實例規格族)的選擇鏡像階段,需要選中安裝RDMA軟件棧。
如果您的業務需要使用GPUDirect RDMA功能,在創建sccgn系列實例的選擇鏡像階段,您需要選中安裝GPU驅動,來快速安裝所需軟件棧及工具包。
說明GPUDirect RDMA是英偉達自Kepler級別GPU和CUDA 5.0以來引入的一種數據直通技術,其使用PCIe數據總線的標準功能,為GPU和第三方對等設備(例如GPU之間、網絡接口、視頻采集設備、存儲適配器)之間提供直接的數據通路。更多信息,請參見英偉達官方文檔。
如果您實例所安裝的網卡驅動為OFED開源版本(下載地址),您可以在安裝網卡驅動后,再安裝GPU驅動及CUDA。
說明CUDA 11.4和R470之后版本已包含了nvidia_peermem模塊,您無需單獨安裝nv_peer_mem模塊。更多信息,請參見nv_peer_memory。
功能通過性驗證及帶寬驗證
功能通過性驗證
該驗證用于檢查sccgn系列實例的RDMA軟件棧安裝和配置是否正確。
執行以下命令,檢驗RDMA軟件棧的安裝情況。
如果在檢查過程中遇到一些問題需要解決,請參見常見問題。
rdma_qos_check -V
如果回顯類似如下內容,表示RDMA軟件棧已正確安裝。
===========================================================
* rdma_qos_check
-----------------------------------------------------------
* ITEM DETAIL RESULT
===========================================================
* link_up eth1: yes ok
* mlnx_device eth1: 1 ok
* drv_ver eth1: 5.2-2.2.3 ok
...
* pci 0000:c5:00.1 ok
* pci 0000:e1:00.0 ok
* pci 0000:e1:00.1 ok
===========================================================
帶寬驗證
該驗證用于檢查RDMA網絡帶寬是否符合對應硬件的預期要求。
服務器端命令
ib_read_bw -a -q 20 --report_gbits -d mlx5_bond_0
類似回顯信息如下:
--------------------------------------------------------------------------------------- RDMA_Read BW Test Dual-port : OFF Device : mlx5_bond_0 Number of qps : 20 Transport type : IB Connection type : RC Using SRQ : OFF PCIe relax order: ON ibv_wr* API : ON CQ Moderation : 100 Mtu : 1024[B] Link type : Ethernet GID index : 3 Outstand reads : 16 rdma_cm QPs : OFF Data ex. method : Ethernet --------------------------------------------------------------------------------------- local address: LID 0000 QPN 0x11ca PSN 0x6302b0 OUT 0x10 RKey 0x17fddc VAddr 0x007f88e1e5d000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:46:14 local address: LID 0000 QPN 0x11cb PSN 0x99aeda OUT 0x10 RKey 0x17fddc VAddr 0x007f88e265d000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:46:14 local address: LID 0000 QPN 0x11cc PSN 0xf0d01c OUT 0x10 RKey 0x17fddc VAddr 0x007f88e2e5d000 ... remote address: LID 0000 QPN 0x11dd PSN 0x8efe92 OUT 0x10 RKey 0x17fddc VAddr 0x007f672004b000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:45:14 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] 8388608 20000 165.65 165.63 0.002468 ---------------------------------------------------------------------------------------
客戶端命令
ib_read_bw -a -q 20 --report_gbits -d mlx5_bond_0 #server_ip
類似回顯信息如下:
--------------------------------------------------------------------------------------- RDMA_Read BW Test Dual-port : OFF Device : mlx5_bond_0 Number of qps : 20 Transport type : IB Connection type : RC Using SRQ : OFF PCIe relax order: ON ibv_wr* API : ON TX depth : 128 CQ Moderation : 100 Mtu : 1024[B] Link type : Ethernet GID index : 3 Outstand reads : 16 rdma_cm QPs : OFF Data ex. method : Ethernet --------------------------------------------------------------------------------------- local address: LID 0000 QPN 0x11ca PSN 0x787f05 OUT 0x10 RKey 0x17fddc VAddr 0x007f671684b000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:45:14 local address: LID 0000 QPN 0x11cb PSN 0x467042 OUT 0x10 RKey 0x17fddc VAddr 0x007f671704b000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:45:14 local address: LID 0000 QPN 0x11cc PSN 0xac262e OUT 0x10 RKey 0x17fddc VAddr 0x007f671784b000 ... remote address: LID 0000 QPN 0x11dd PSN 0xeb1c3f OUT 0x10 RKey 0x17fddc VAddr 0x007f88eb65d000 GID: 00:00:00:00:00:00:00:00:00:00:255:255:200:00:46:14 --------------------------------------------------------------------------------------- #bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps] Conflicting CPU frequency values detected: 800.000000 != 3177.498000. CPU Frequency is not max. 2 20000 0.058511 0.058226 3.639132 Conflicting CPU frequency values detected: 799.996000 != 3384.422000. CPU Frequency is not max. ... Conflicting CPU frequency values detected: 800.000000 != 3166.731000. CPU Frequency is not max. 4194304 20000 165.55 165.55 0.004934 Conflicting CPU frequency values detected: 800.000000 != 2967.226000. CPU Frequency is not max. 8388608 20000 165.65 165.63 0.002468 ---------------------------------------------------------------------------------------
運行以上命令時,可通過rdma_monitor -s -t -G
命令在ECS控制臺觀測對應網卡各端口的實際帶寬。類似回顯信息如下:
------
2022-2-18 09:48:59 CST
tx_rate: 81.874 (40.923/40.951)
rx_rate: 0.092 (0.055/0.037)
tx_pause: 0 (0/0)
rx_pause: 0 (0/0)
tx_pause_duration: 0 (0/0)
rx_pause_duration: 0 (0/0)
np_cnp_sent: 0
rp_cnp_handled: 4632
num_of_qp: 22
np_ecn_marked: 0
rp_cnp_ignored: 0
out_of_buffer: 0
out_of_seq: 0
packet_seq_err: 0
tx_rate_prio0: 0.000 (0.000/0.000)
rx_rate_prio0: 0.000 (0.000/0.000)
tcp_segs_retrans: 0
tcp_retrans_rate: 0
cpu_usage: 0.35%
free_mem: 1049633300 kB
------
nccl-tests用例
為測試和驗證配備RDMA網絡的機型在應用中的實際表現,下文以nccl-tests用例為例,展示如何使用sccgn系列實例的RDMA功能加速您的應用。nccl-tests示例如下:
關于nccl-tests的更多信息,請參見nccl-tests。
#!/bin/sh
# 使用的操作系統為 Alibaba Cloud Linux 2
# 安裝openmpi及編譯器
wget https://ali-perseus-release.oss-cn-huhehaote.aliyuncs.com/openmpi-4.0.3-1.x86_64.rpm
rpm -ivh --force openmpi-4.0.3-1.x86_64.rpm --nodeps
yum install -y gcc-c++
# 修改~/.bashrc
export PATH=/usr/local/cuda-11.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/lib:/usr/local/lib/openmpi:/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
# 下載測試代碼并編譯
git clone https://github.com/NVIDIA/nccl-tests
cd nccl-tests/
make MPI=1 CUDA_HOME=/usr/local/cuda
# 將 host1, host2 替換為你對應的 IP 地址
mpirun --allow-run-as-root -np 16 -npernode 8 -H {host1}:{host2} \
--bind-to none \
-mca btl_tcp_if_include bond0 \
-x PATH \
-x CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
-x NCCL_SOCKET_IFNAME=bond0 \
-x NCCL_IB_HCA=mlx5 \
-x NCCL_IB_DISABLE=0 \
-x NCCL_DEBUG=INFO \
-x NCCL_NSOCKS_PERTHREAD=8 \
-x NCCL_SOCKET_NTHREADS=8 \
-x NCCL_IB_GID_INDEX=3 \
-x NCCL_DEBUG_SUBSYS=NET,GRAPH \
-x NCCL_IB_QPS_PER_CONNECTION=4 \
./build/all_reduce_perf -b 4M -e 4M -f 2 -g 1 -t 1 -n 20
常見問題
執行命令rdma_qos_check -V
時,系統報錯:drv_fw_ver eth1: 5.2-2.2.3/22.29.1016 fail
問題原因:此報錯表示Mellanox網卡固件未更新。
解決方案:
在Alibaba Cloud Linux 2或CentOS 8.3系統中,執行
/usr/share/nic-drivers-mellanox-rdma/sources/alifwmanager-22292302 --force --yes
命令刷新服務器網卡固件。在Debian-based的系統中,下載固件刷新程序(下載地址),然后執行
./alifwmanager-22292302 --force --yes
來刷新服務器的網卡固件。
執行命令rdma_qos_check -V
時,系統報錯:* roce_ver : 0 fail
問題原因:此報錯表示缺少configfs、rdma_cm等內核模塊。
解決方案:您可以執行modprobe mlx5_ib && modprobe configfs && modprobe rdma_cm
命令加載對應內核模塊。
在Debian系統中,執行命令systemctl start networking
啟動網絡服務時,系統提示找不到bond
問題原因:此報錯可能由于mlx5_ib內核模塊未加載。
解決方案:您可以執行modprobe mlx5_ib
加載此內核模塊。
執行命令rdma_qos_check -V
或命令ib_read_bw
時,系統報錯:ERROR: RoCE tos isn't correct on mlx5_bond_3
您可以執行命令rdma_qos_init
對網絡進行初始化。
執行命令rdma_qos_check -V
時,系統報錯:cm_tos mlx5_bond_1: 0 fail
在Alibaba Cloud Linux 2中,重啟服務器后,執行驗證命令rdma_qos_check -V
出現報錯時,您可以執行命令rdma_qos_init
對網絡進行初始化。
執行命令rdma_qos_check -V
時,系統報錯:trust_mod eth1: pcp fail
在CentOS 8.3系統中,重啟服務器后,執行驗證命令rdma_qos_check -V
出現報錯時,您可以執行命令rdma_qos_init
對網絡進行初始化。
RDMA網絡接口bond*出現獲取不到bond ip的情況
您可以執行命令ifdown bond*
和ifup bond*
獲取到bond ip。
請將*
替換為對應網絡接口的序號。