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

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

▲ IP 地址規劃
2.4 執行配置命令
在 node1 上執行:
# 物理端口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 上執行:
# 物理端口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 設置無密碼 SSH 身份驗證
需要找到已啟動的 ConnectX-7 接口的 IP 地址。在兩個節點上,分別運行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
在兩個節點上分別運行以下命令以啟用無密碼 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 包)來驗證聚合帶寬是否能達到 200 Gbps 的物理極限。
3.1 測試一:單物理端口聚合帶寬(物理端口 1)
此測試的目標是驗證單個物理端口(使用其對應的兩條 PCIe 路徑)是否能跑滿 200 Gbps。
測試步驟:我們需要在兩個節點上同時啟動兩個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(服務端))終端 1 中運行:
ib_write_bw-d rocep1s0f0 -p18511--bind_source_ip=192.168.10.11--report_gbits --run_infinitely -D5
在node1(客戶端) 終端 1 中運行:
ib_write_bw-d rocep1s0f0 -p18511--report_gbits --run_infinitely -D5192.168.10.11
觀察到帶寬結果:約 97 Gbit/s。

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

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

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

▲ 測試結果截圖
測試結果:當所有四條鏈路并發運行時,觀察到每條鏈路的帶寬被平均分配。
每條路徑帶寬 ≈ 49 Gbit/s
總帶寬= ~49 + ~49 + ~49 + ~49 =196 Gbit/s
結論:表明 ConnectX-7 網卡的總帶寬約為 196 Gbit/s(接近 200G 目標)。無論流量是集中在單個物理端口(如測試 3.1),還是分散到兩個物理端口(如測試 3.2),總吞吐量保持一致。
4NCCL 通信性能測試
在深度學習場景中,NCCL 是多機通信的關鍵。我們按照官方文檔編譯 nccl-tests 并進行all_gather和 all_reduce測試。
4.1 安裝依賴項并構建 NCCL
#安裝依賴項并構建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" #設置環境變量 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 構建 NCCL 測試套件
gitclonehttps://github.com/NVIDIA/nccl-tests.git ~/nccl-tests/ cd~/nccl-tests/ make MPI=1
4.3 All-Gather 帶寬測試(單路徑)
注意:此步驟僅選擇物理端口 1 的一條路徑(路徑Aenp1s0f0np0)作為通信接口,以建立一個單路徑基準。
# 僅指定物理端口1/路徑A enp1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0 #指定物理端口1/路徑A的設備標識 exportNCCL_IB_HCA=rocep1s0f0
運行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可以加上此命令以查看詳細日志。
測試結果:單路徑下,All-Gather操作的平均總線帶寬達到12.04 GB/s。

▲ 測試結果截圖
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 #指定兩個路徑的設備標識 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
測試結果:雙路徑下,All-Gather 操作的平均總線帶寬達到22.68 GB/s。

▲ 測試結果截圖
4.5 All-reduce 帶寬測試(單路徑)
注意:切換終端時,請勿忘記重新導入 4.1 節中設置的環境變量。
# 僅指定物理端口1/路徑A enp1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0 #指定物理端口1/路徑A的設備標識 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
測試結果:在單路徑 All-Reduce 測試中,512MB 大消息量下達到的12.08 GB/s總線帶寬。

▲ 測試結果截圖
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 #指定兩個路徑的設備標識 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
測試結果:在雙路徑 All-Reduce 測試中,512MB 大消息量下達到的18.02 GB/s總線帶寬。

▲ 測試結果截圖
5測試總結與分析
根據以上測試,可以得出以下關鍵結論:
配置確認:DGX Spark 上的 ConnectX-7 網卡確實因 socket 直通呈現為 4 個邏輯接口。
硬件能力驗證(ib_write_bw):原始帶寬測試(ib_write_bw)結果(185-196 Gbit/s)表明,無論是通過單物理端口還是雙物理端口,該網卡均能提供接近 200 Gbps 的聚合吞吐能力,符合硬件設計預期。
NCCL 性能分析:在單物理端口(雙路徑)上運行時,All-Gather 操作針對超大消息量實現了22.68 GB/s的平均總線帶寬,展現了其在高并行通信場景下出色的數據聚合與分發吞吐能力。All-Reduce 測試中,512MB 大消息量下達到的18.02 GB/s總線帶寬,是當前系統通信性能的真實峰值,反映了 NCCL 算法與硬件互聯在高負載下的真實吞吐能力。
更多關于 DGX Spark 的使用指南、測試報告等,將在麗臺科技公眾號持續發布,敬請保持關注!
-
NVIDIA
+關注
關注
14文章
5513瀏覽量
109200 -
網卡
+關注
關注
4文章
334瀏覽量
28753 -
端口
+關注
關注
4文章
1102瀏覽量
33864 -
SPARK
+關注
關注
1文章
108瀏覽量
21122
原文標題:網卡配置與性能驗證:當 NVIDIA DGX Spark 遇上 ConnectX-7 200G
文章出處:【微信號:Leadtek,微信公眾號:麗臺科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
nvidia收購mellanox
NVIDIA ConnectX網卡助力社交網絡關鍵任務的分布式應用
NVIDIA ConnectX智能網卡驅動RDMA通訊技術在分布式存儲的應用
NVIDIA推出搭載GB200 Grace Blackwell超級芯片的NVIDIA DGX SuperPOD?
NVIDIA 宣布推出 DGX Spark 個人 AI 計算機
NVIDIA GTC2025 亮點 NVIDIA推出 DGX Spark個人AI計算機
NVIDIA DGX Spark新一代AI超級計算機正式交付
NVIDIA黃仁勛向SpaceX馬斯克交付DGX Spark
NVIDIA宣布開源Aerial軟件
NVIDIA DGX Spark助力構建自己的AI模型

在NVIDIA DGX Spark平臺上對NVIDIA ConnectX-7 200G網卡配置教程
評論