在NVIDIA DGX Spark平臺上對NVIDIAConnectX-7 200G網(wǎng)卡進(jìn)行配置時,會遇到“4 個邏輯端口”現(xiàn)象。理解背后的真相是后續(xù)所有配置的基礎(chǔ)。本文將從此現(xiàn)象入手,逐步解析其原理,并提供從基礎(chǔ)配置到深度性能驗證的完整流程。
1理解“4 個邏輯端口”的真相
目前,在 DGX Spark 系統(tǒng)上配置 ConnectX-7(CX7)網(wǎng)卡時,會遇到一個常見問題:DGX Spark 只有兩個物理端口,但在使用ip-br a或ibdev2netdev命令查看時, ConnectX-7 網(wǎng)卡顯示為四個端口:
rocep1s0f0port1==> enp1s0f0np0 (Up) 物理端口1/路徑A rocep1s0f1port1==> enp1s0f1np1 (Up) 物理端口2/路徑A roceP2p1s0f0port1==> enP2p1s0f0np0 (Up) 物理端口1/路徑B roceP2p1s0f1port1==> enP2p1s0f1np1 (Up) 物理端口2/路徑B
答案在于 GB10 芯片的 PCIe 限制與 Socket Direct 模式。
簡單理解為:其無法為單個設(shè)備提供超過 x4 寬度的 PCIe 通道。因此為了實現(xiàn) 200 Gbps 的傳輸速率,將啟用 ConnectX-7 的 socket 直通,把兩條獨(dú)立的 x4 PCIe 鏈路聚合起來,從而共同達(dá)到 200 Gbps 的帶寬。
而 ConnectX-7 網(wǎng)卡在 Socket Direct 模式下,分別由 GB10 SoC 的兩條獨(dú)立 PCle x4 鏈路(我們稱之為路徑 A 和路徑 B)驅(qū)動,所以會把每一個物理接口識別成兩個 PCle 設(shè)備,進(jìn)而對應(yīng)兩個邏輯接口。經(jīng)由每個 PCle x4 的連接,只有100 Gbps,無法滿足 200 Gbps 的傳輸需求,所以對應(yīng)下圖中,在配置網(wǎng)絡(luò)和構(gòu)建流量時,要實現(xiàn)完整的 200 Gbps 帶寬必須同時使用這兩條鏈路(路徑 A 和路徑 B)——即使只用一個物理接口,也需確保兩路流量都被激活。

▲ 邏輯端口示意圖
2025 麗臺(上海)信息科技有限公司
本圖片由麗臺科技制作,如果您有任何疑問或需要使用此圖片,請聯(lián)系麗臺科技(下同)
具體表現(xiàn)為:
路徑 A-> 訪問物理端口 1 (enp1s0f0np0)
路徑 A-> 訪問物理端口 2 (enp1s0f1np1)
路徑 B-> 訪問物理端口 1 (enP2p1s0f0np0)
路徑 B-> 訪問物理端口 2 (enP2p1s0f1np1)
這不是四個獨(dú)立的物理網(wǎng)口,而是兩個物理網(wǎng)口在操作系統(tǒng)層面被“鏡像”為四條 PCIe 路徑。為了充分利用硬件性能,必須正確配置并測試這四條路徑。
2網(wǎng)絡(luò)配置:連接兩臺 DGX Spark
下面將重點介紹連接兩臺 DGX Spark 時的手動靜態(tài) IP 分配。
2.1 確保兩個系統(tǒng)上的用戶名相同
此步驟旨在確保兩臺 DGX Spark 設(shè)備使用相同的用戶名,以便后續(xù)操作(尤其是 SSH 免密登錄和分布式任務(wù)調(diào)度)能夠無縫進(jìn)行。
注:用戶可根據(jù)實際情況自行配置,無需嚴(yán)格遵循以下步驟。
2.1.1 檢查當(dāng)前用戶名
在兩臺機(jī)器上分別運(yùn)行:
whoami
如果兩臺都已經(jīng)是leadtek_dgx1,則無需操作,直接繼續(xù)后續(xù)步驟。
如果任一系統(tǒng)用戶名不同,請按以下步驟創(chuàng)建統(tǒng)一用戶。
2.1.2 在兩臺系統(tǒng)上創(chuàng)建 leadtek_dgx1 用戶(如不存在)
# 創(chuàng)建用戶并設(shè)置主目錄 sudouseradd -m leadtek_dgx1 # 將用戶加入 sudo 組 sudousermod -aGsudoleadtek_dgx1 # 設(shè)置密碼 sudopasswd leadtek_dgx1 #切換到該用戶 su - leadtek_dgx1
完成后,兩臺系統(tǒng)均以相同用戶名leadtek_dgx1登錄,便于后續(xù) SSH 免密操作。
2.2 確認(rèn)接口狀態(tài)
確定所有網(wǎng)絡(luò)端口均已連接(Up 狀態(tài)):
leadtek_dgx1@spark-a83f:~$ ibdev2netdev rocep1s0f0port1==> enp1s0f0np0 (Up) rocep1s0f1port1==> enp1s0f1np1 (Up) roceP2p1s0f0port1==> enP2p1s0f0np0 (Up) roceP2p1s0f1port1==> enP2p1s0f1np1 (Up)
2.3 IP 地址規(guī)劃
我們?yōu)?node1 和 node2 上的四個邏輯接口分別規(guī)劃獨(dú)立的子網(wǎng),用于后續(xù)網(wǎng)絡(luò)性能測試。

▲ IP 地址規(guī)劃
2.4 執(zhí)行配置命令
在 node1 上執(zhí)行:
# 物理端口1 / 路徑A (192.168.10.0/24)/enp1s0f0np0 sudoip addr add192.168.10.10/24dev enp1s0f0np0 sudoip link set enp1s0f0np0 up # 物理端口2 / 路徑A (192.168.11.0/24)/enp1s0f1np1 sudoip addr add192.168.11.10/24dev enp1s0f1np1 sudoip link set enp1s0f1np1 up # 物理端口1 / 路徑B (192.168.12.0/24)/enP2p1s0f0np0 sudoip addr add192.168.12.10/24dev enP2p1s0f0np0 sudoip link set enP2p1s0f0np0 up # 物理端口2 / 路徑B (192.168.13.0/24)/enP2p1s0f1np1 sudoip addr add192.168.13.10/24dev enP2p1s0f1np1 sudoip link set enP2p1s0f1np1 up #ip -br a enp1s0f0np0 UP 192.168.10.10/24 enp1s0f1np1 UP 192.168.11.10/24 enP2p1s0f0np0 UP 192.168.12.10/24 enP2p1s0f1np1 UP 192.168.13.10/24
在 node2 上執(zhí)行:
# 物理端口1 / 路徑A (192.168.10.0/24)/enp1s0f0np0 sudoip addr add192.168.10.11/24dev enp1s0f0np0 sudoip link set enp1s0f0np0 up # 物理端口1 / 路徑A (192.168.11.0/24)/enp1s0f1np1 sudoip addr add192.168.11.11/24dev enp1s0f1np1 sudoip link set enp1s0f1np1 up # 物理端口2 / 路徑B (192.168.12.0/24)/enP2p1s0f0np0 sudoip addr add192.168.12.11/24dev enP2p1s0f0np0 sudoip link set enP2p1s0f0np0 up # 物理端口2 / 路徑B (192.168.13.0/24)/enP2p1s0f1np1 sudoip addr add192.168.13.11/24dev enP2p1s0f1np1 sudoip link set enP2p1s0f1np1 up #ip -br a enp1s0f0np0 UP 192.168.10.11/24 enp1s0f1np1 UP 192.168.11.11/24 enP2p1s0f0np0 UP 192.168.12.11/24 enP2p1s0f1np1 UP 192.168.13.11/24
2.5 設(shè)置無密碼 SSH 身份驗證
需要找到已啟動的 ConnectX-7 接口的 IP 地址。在兩個節(jié)點上,分別運(yùn)行ip addr show enp1s0f0np0:
#ip addr show enp1s0f0np0 3: enp1s0f0np0:mtu1500qdisc mq state UP group default qlen1000 link/ether4c47:7d40brd ffffff:ff inet192.168.10.10/24scope global enp1s0f0np0 valid_lftforever preferred_lft forever #ip addr show enp1s0f0np0 3: enp1s0f0np0: mtu1500qdisc mq state UP group default qlen1000 link/ether4c47:7d8f brd ffffff:ff inet192.168.10.11/24scope global enp1s0f0np0 valid_lftforever preferred_lft forever
確定 node1 和 node2 IP:
node1:192.168.10.10 node2:192.168.10.11
在兩個節(jié)點上分別運(yùn)行以下命令以啟用無密碼 SSH:
ssh-copy-id -i ~/.ssh/id_rsa.pub leadtek_dgx1@192.168.10.10 ssh-copy-id -i ~/.ssh/id_rsa.pub leadtek_dgx1@192.168.10.11 ssh192.168.10.10hostname ssh192.168.10.11hostname
3RDMA 帶寬性能測試
配置完成后,我們使用ib_write_bw工具(來自 perftest-tools 包)來驗證聚合帶寬是否能達(dá)到 200 Gbps 的物理極限。
3.1 測試一:單物理端口聚合帶寬(物理端口 1)
此測試的目標(biāo)是驗證單個物理端口(使用其對應(yīng)的兩條 PCIe 路徑)是否能跑滿 200 Gbps。
測試步驟:我們需要在兩個節(jié)點上同時啟動兩個ib_write_bw實例,一個跑在物理端口 1/ 路徑 A(192.168.10.x),一個跑在物理端口 1/ 路徑 B(192.168.12.x)。
3.1.1 啟動物理端口 1/ 路徑 A (192.168.10.x)測試
在node2(服務(wù)端))終端 1 中運(yùn)行:
ib_write_bw-d rocep1s0f0 -p18511--bind_source_ip=192.168.10.11--report_gbits --run_infinitely -D5
在node1(客戶端) 終端 1 中運(yùn)行:
ib_write_bw-d rocep1s0f0 -p18511--report_gbits --run_infinitely -D5192.168.10.11
觀察到帶寬結(jié)果:約 97 Gbit/s。

▲ 測試結(jié)果截圖
2025 麗臺(上海)信息科技有限公司
本文所有測試結(jié)果均由麗臺科技實測得出,如果您有任何疑問或需要使用此測試結(jié)果,請聯(lián)系麗臺科技(下同)
3.1.2 保持物理端口 1/ 路徑 A 通信,啟動物理端口 1/ 路徑 B (192.168.12.x)測試
在node2(服務(wù)端) 終端 2 中運(yùn)行:
ib_write_bw-d roceP2p1s0f0 -p18512--bind_source_ip=192.168.12.11--report_gbits --run_infinitely -D5
在node1(客戶端) 終端 2 中運(yùn)行:
ib_write_bw-d roceP2p1s0f0 -p18512--report_gbits --run_infinitely -D5192.168.12.11
觀察到帶寬結(jié)果:約 92 Gbit/s。

▲ 測試結(jié)果截圖
測試結(jié)果(物理端口 1):

▲ 測試結(jié)果截圖
總帶寬= 路徑 A 平均帶寬 + 路徑 B 平均帶寬
總帶寬≈ 92.5 + 92.5 =185 Gbit/s
結(jié)論:測試結(jié)果驗證了單個物理端口可以通過聚合其背后的兩條 PCIe 路徑,提供接近 200 Gbit/s 的理論帶寬。
3.2 測試二:雙物理端口帶寬
此測試的目標(biāo)是驗證當(dāng)兩個物理端口(即所有四條 PCIe 路徑)同時工作時,網(wǎng)卡的總吞吐能力。
測試步驟:保持 3.1 中的兩個測試(物理端口 1 的 A、B 兩條路徑)持續(xù)運(yùn)行,在兩個節(jié)點上額外再啟動兩個ib_write_bw實例,分別對應(yīng)物理端口 2 的兩條路徑。
3.2.1 啟動物理端口 2/ 路徑 A(192.168.11.x)
在node2(服務(wù)端)終端 3 中運(yùn)行:
ib_write_bw-d rocep1s0f1 -p18513--bind_source_ip=192.168.11.11--report_gbits --run_infinitely -D5
在node1(客戶端)終端 3 中運(yùn)行:
ib_write_bw-d rocep1s0f1 -p18513--report_gbits --run_infinitely -D5192.168.11.11
3.2.2 啟動物理端口 2/ 路徑 B(192.168.13.x)
在node2(服務(wù)端)終端 4 中運(yùn)行:
ib_write_bw-d roceP2p1s0f1 -p18514--bind_source_ip=192.168.13.11--report_gbits --run_infinitely -D5
在node1(客戶端)終端 4 中運(yùn)行:
ib_write_bw-d roceP2p1s0f1 -p18514--report_gbits --run_infinitely -D5192.168.13.11

▲ 測試結(jié)果截圖
測試結(jié)果:當(dāng)所有四條鏈路并發(fā)運(yùn)行時,觀察到每條鏈路的帶寬被平均分配。
每條路徑帶寬 ≈ 49 Gbit/s
總帶寬= ~49 + ~49 + ~49 + ~49 =196 Gbit/s
結(jié)論:表明 ConnectX-7 網(wǎng)卡的總帶寬約為 196 Gbit/s(接近 200G 目標(biāo))。無論流量是集中在單個物理端口(如測試 3.1),還是分散到兩個物理端口(如測試 3.2),總吞吐量保持一致。
4NCCL 通信性能測試
在深度學(xué)習(xí)場景中,NCCL 是多機(jī)通信的關(guān)鍵。我們按照官方文檔編譯 nccl-tests 并進(jìn)行all_gather和 all_reduce測試。
4.1 安裝依賴項并構(gòu)建 NCCL
#安裝依賴項并構(gòu)建NCCL sudoapt-get update &&sudoapt-get install -y libopenmpi-dev gitclone-b v2.28.3-1 https://github.com/NVIDIA/nccl.git ~/nccl/ cd~/nccl/ make -j src.build NVCC_GENCODE="-gencode=arch=compute_121,code=sm_121" #設(shè)置環(huán)境變量 exportCUDA_HOME="/usr/local/cuda" exportMPI_HOME="/usr/lib/aarch64-linux-gnu/openmpi" exportNCCL_HOME="$HOME/nccl/build/" exportLD_LIBRARY_PATH="$NCCL_HOME/lib:$CUDA_HOME/lib64/:$MPI_HOME/lib:$LD_LIBRARY_PATH"
4.2 構(gòu)建 NCCL 測試套件
gitclonehttps://github.com/NVIDIA/nccl-tests.git ~/nccl-tests/ cd~/nccl-tests/ make MPI=1
4.3 All-Gather 帶寬測試(單路徑)
注意:此步驟僅選擇物理端口 1 的一條路徑(路徑Aenp1s0f0np0)作為通信接口,以建立一個單路徑基準(zhǔn)。
# 僅指定物理端口1/路徑A enp1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0 #指定物理端口1/路徑A的設(shè)備標(biāo)識 exportNCCL_IB_HCA=rocep1s0f0
運(yùn)行all_gather測試(單路徑):
mpirun-np2-H192.168.10.10:1,192.168.10.11:1 --mca plm_rsh_agent"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -x LD_LIBRARY_PATH -x NCCL_IB_HCA $HOME/nccl-tests/build/all_gather_perf -b16G -e16G -f2
-x NCCL_DEBUG=INFO可以加上此命令以查看詳細(xì)日志。
測試結(jié)果:單路徑下,All-Gather操作的平均總線帶寬達(dá)到12.04 GB/s。

▲ 測試結(jié)果截圖
4.4 All-Gather 帶寬測試(雙路徑)
注意:此步驟選擇物理端口 1 的兩條路徑作為通信接口,以建立雙鏈路。
#指定物理端口1/路徑A和路徑B enp1s0f0np0,enP2p1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0,enP2p1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0,enP2p1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0,enP2p1s0f0np0 #指定兩個路徑的設(shè)備標(biāo)識 exportNCCL_IB_HCA=rocep1s0f0,roceP2p1s0f0 mpirun-np2-H192.168.10.10:1,192.168.10.11:1 --mca plm_rsh_agent"ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" -x LD_LIBRARY_PATH -x NCCL_IB_HCA $HOME/nccl-tests/build/all_gather_perf -b16G -e16G -f2
測試結(jié)果:雙路徑下,All-Gather 操作的平均總線帶寬達(dá)到22.68 GB/s。

▲ 測試結(jié)果截圖
4.5 All-reduce 帶寬測試(單路徑)
注意:切換終端時,請勿忘記重新導(dǎo)入 4.1 節(jié)中設(shè)置的環(huán)境變量。
# 僅指定物理端口1/路徑A enp1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0 #指定物理端口1/路徑A的設(shè)備標(biāo)識 exportNCCL_IB_HCA=rocep1s0f0 mpirun-np2 -host192.168.10.10:1,192.168.10.11:1 -x LD_LIBRARY_PATH -x NCCL_IB_HCA $HOME/nccl-tests/build/all_reduce_perf -b1M -e512M -f2-g1
測試結(jié)果:在單路徑 All-Reduce 測試中,512MB 大消息量下達(dá)到的12.08 GB/s總線帶寬。

▲ 測試結(jié)果截圖
4.6 All-reduce 帶寬測試(雙路徑)
# 指定物理端口1/路徑A和路徑B enp1s0f0np0,enP2p1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0,enP2p1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0,enP2p1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0,enP2p1s0f0np0 #指定兩個路徑的設(shè)備標(biāo)識 exportNCCL_IB_HCA=rocep1s0f0,roceP2p1s0f0 mpirun-np2 -host192.168.10.10:1,192.168.10.11:1 -x LD_LIBRARY_PATH -x NCCL_IB_HCA $HOME/nccl-tests/build/all_reduce_perf -b1M -e512M -f2-g1
測試結(jié)果:在雙路徑 All-Reduce 測試中,512MB 大消息量下達(dá)到的18.02 GB/s總線帶寬。

▲ 測試結(jié)果截圖
5測試總結(jié)與分析
根據(jù)以上測試,可以得出以下關(guān)鍵結(jié)論:
配置確認(rèn):DGX Spark 上的 ConnectX-7 網(wǎng)卡確實因 socket 直通呈現(xiàn)為 4 個邏輯接口。
硬件能力驗證(ib_write_bw):原始帶寬測試(ib_write_bw)結(jié)果(185-196 Gbit/s)表明,無論是通過單物理端口還是雙物理端口,該網(wǎng)卡均能提供接近 200 Gbps 的聚合吞吐能力,符合硬件設(shè)計預(yù)期。
NCCL 性能分析:在單物理端口(雙路徑)上運(yùn)行時,All-Gather 操作針對超大消息量實現(xiàn)了22.68 GB/s的平均總線帶寬,展現(xiàn)了其在高并行通信場景下出色的數(shù)據(jù)聚合與分發(fā)吞吐能力。All-Reduce 測試中,512MB 大消息量下達(dá)到的18.02 GB/s總線帶寬,是當(dāng)前系統(tǒng)通信性能的真實峰值,反映了 NCCL 算法與硬件互聯(lián)在高負(fù)載下的真實吞吐能力。
更多關(guān)于 DGX Spark 的使用指南、測試報告等,將在麗臺科技公眾號持續(xù)發(fā)布,敬請保持關(guān)注!
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5594瀏覽量
109749 -
網(wǎng)卡
+關(guān)注
關(guān)注
4文章
339瀏覽量
28910 -
端口
+關(guān)注
關(guān)注
4文章
1104瀏覽量
33966 -
SPARK
+關(guān)注
關(guān)注
1文章
108瀏覽量
21240
原文標(biāo)題:網(wǎng)卡配置與性能驗證:當(dāng) NVIDIA DGX Spark 遇上 ConnectX-7 200G
文章出處:【微信號:Leadtek,微信公眾號:麗臺科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
NVIDIA DGX Spark系統(tǒng)恢復(fù)過程與步驟
NVIDIA DGX Spark快速入門指南
Microchip發(fā)布專為NVIDIA DGX Spark而設(shè)計的MEC1723嵌入式控制器定制固件
nvidia收購mellanox
NVIDIA ConnectX網(wǎng)卡助力社交網(wǎng)絡(luò)關(guān)鍵任務(wù)的分布式應(yīng)用
NVIDIA ConnectX智能網(wǎng)卡驅(qū)動RDMA通訊技術(shù)在分布式存儲的應(yīng)用
NVIDIA推出搭載GB200 Grace Blackwell超級芯片的NVIDIA DGX SuperPOD?
NVIDIA 宣布推出 DGX Spark 個人 AI 計算機(jī)
NVIDIA GTC2025 亮點 NVIDIA推出 DGX Spark個人AI計算機(jī)
NVIDIA發(fā)布AI優(yōu)先DGX個人計算系統(tǒng)
NVIDIA DGX Spark桌面AI計算機(jī)開啟預(yù)訂
NVIDIA DGX Spark新一代AI超級計算機(jī)正式交付
NVIDIA宣布開源Aerial軟件
NVIDIA DGX Spark助力構(gòu)建自己的AI模型
在NVIDIA DGX Spark平臺上對NVIDIA ConnectX-7 200G網(wǎng)卡配置教程
評論