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

▲ 邏輯端口示意圖
2025 麗臺(tái)(上海)信息科技有限公司
本圖片由麗臺(tái)科技制作,如果您有任何疑問或需要使用此圖片,請(qǐng)聯(lián)系麗臺(tái)科技(下同)
具體表現(xiàn)為:
路徑 A-> 訪問物理端口 1 (enp1s0f0np0)
路徑 A-> 訪問物理端口 2 (enp1s0f1np1)
路徑 B-> 訪問物理端口 1 (enP2p1s0f0np0)
路徑 B-> 訪問物理端口 2 (enP2p1s0f1np1)
這不是四個(gè)獨(dú)立的物理網(wǎng)口,而是兩個(gè)物理網(wǎng)口在操作系統(tǒng)層面被“鏡像”為四條 PCIe 路徑。為了充分利用硬件性能,必須正確配置并測(cè)試這四條路徑。
2網(wǎng)絡(luò)配置:連接兩臺(tái) DGX Spark
下面將重點(diǎn)介紹連接兩臺(tái) DGX Spark 時(shí)的手動(dòng)靜態(tài) IP 分配。
2.1 確保兩個(gè)系統(tǒng)上的用戶名相同
此步驟旨在確保兩臺(tái) DGX Spark 設(shè)備使用相同的用戶名,以便后續(xù)操作(尤其是 SSH 免密登錄和分布式任務(wù)調(diào)度)能夠無縫進(jìn)行。
注:用戶可根據(jù)實(shí)際情況自行配置,無需嚴(yán)格遵循以下步驟。
2.1.1 檢查當(dāng)前用戶名
在兩臺(tái)機(jī)器上分別運(yùn)行:
whoami
如果兩臺(tái)都已經(jīng)是leadtek_dgx1,則無需操作,直接繼續(xù)后續(xù)步驟。
如果任一系統(tǒng)用戶名不同,請(qǐng)按以下步驟創(chuàng)建統(tǒng)一用戶。
2.1.2 在兩臺(tái)系統(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ái)系統(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 上的四個(gè)邏輯接口分別規(guī)劃獨(dú)立的子網(wǎng),用于后續(xù)網(wǎng)絡(luò)性能測(cè)試。

▲ 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 身份驗(yàn)證
需要找到已啟動(dòng)的 ConnectX-7 接口的 IP 地址。在兩個(gè)節(jié)點(diǎn)上,分別運(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
在兩個(gè)節(jié)點(diǎn)上分別運(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 帶寬性能測(cè)試
配置完成后,我們使用ib_write_bw工具(來自 perftest-tools 包)來驗(yàn)證聚合帶寬是否能達(dá)到 200 Gbps 的物理極限。
3.1 測(cè)試一:?jiǎn)挝锢矶丝诰酆蠋挘ㄎ锢矶丝?1)
此測(cè)試的目標(biāo)是驗(yàn)證單個(gè)物理端口(使用其對(duì)應(yīng)的兩條 PCIe 路徑)是否能跑滿 200 Gbps。
測(cè)試步驟:我們需要在兩個(gè)節(jié)點(diǎn)上同時(shí)啟動(dòng)兩個(gè)ib_write_bw實(shí)例,一個(gè)跑在物理端口 1/ 路徑 A(192.168.10.x),一個(gè)跑在物理端口 1/ 路徑 B(192.168.12.x)。
3.1.1 啟動(dòng)物理端口 1/ 路徑 A (192.168.10.x)測(cè)試
在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。

▲ 測(cè)試結(jié)果截圖
2025 麗臺(tái)(上海)信息科技有限公司
本文所有測(cè)試結(jié)果均由麗臺(tái)科技實(shí)測(cè)得出,如果您有任何疑問或需要使用此測(cè)試結(jié)果,請(qǐng)聯(lián)系麗臺(tái)科技(下同)
3.1.2 保持物理端口 1/ 路徑 A 通信,啟動(dòng)物理端口 1/ 路徑 B (192.168.12.x)測(cè)試
在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。

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

▲ 測(cè)試結(jié)果截圖
總帶寬= 路徑 A 平均帶寬 + 路徑 B 平均帶寬
總帶寬≈ 92.5 + 92.5 =185 Gbit/s
結(jié)論:測(cè)試結(jié)果驗(yàn)證了單個(gè)物理端口可以通過聚合其背后的兩條 PCIe 路徑,提供接近 200 Gbit/s 的理論帶寬。
3.2 測(cè)試二:雙物理端口帶寬
此測(cè)試的目標(biāo)是驗(yàn)證當(dāng)兩個(gè)物理端口(即所有四條 PCIe 路徑)同時(shí)工作時(shí),網(wǎng)卡的總吞吐能力。
測(cè)試步驟:保持 3.1 中的兩個(gè)測(cè)試(物理端口 1 的 A、B 兩條路徑)持續(xù)運(yùn)行,在兩個(gè)節(jié)點(diǎn)上額外再啟動(dòng)兩個(gè)ib_write_bw實(shí)例,分別對(duì)應(yīng)物理端口 2 的兩條路徑。
3.2.1 啟動(dòng)物理端口 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 啟動(dòng)物理端口 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

▲ 測(cè)試結(jié)果截圖
測(cè)試結(jié)果:當(dāng)所有四條鏈路并發(fā)運(yùn)行時(shí),觀察到每條鏈路的帶寬被平均分配。
每條路徑帶寬 ≈ 49 Gbit/s
總帶寬= ~49 + ~49 + ~49 + ~49 =196 Gbit/s
結(jié)論:表明 ConnectX-7 網(wǎng)卡的總帶寬約為 196 Gbit/s(接近 200G 目標(biāo))。無論流量是集中在單個(gè)物理端口(如測(cè)試 3.1),還是分散到兩個(gè)物理端口(如測(cè)試 3.2),總吞吐量保持一致。
4NCCL 通信性能測(cè)試
在深度學(xué)習(xí)場(chǎng)景中,NCCL 是多機(jī)通信的關(guān)鍵。我們按照官方文檔編譯 nccl-tests 并進(jìn)行all_gather和 all_reduce測(cè)試。
4.1 安裝依賴項(xiàng)并構(gòu)建 NCCL
#安裝依賴項(xiàng)并構(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 測(cè)試套件
gitclonehttps://github.com/NVIDIA/nccl-tests.git ~/nccl-tests/ cd~/nccl-tests/ make MPI=1
4.3 All-Gather 帶寬測(cè)試(單路徑)
注意:此步驟僅選擇物理端口 1 的一條路徑(路徑Aenp1s0f0np0)作為通信接口,以建立一個(gè)單路徑基準(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)識(shí) exportNCCL_IB_HCA=rocep1s0f0
運(yùn)行all_gather測(cè)試(單路徑):
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ì)日志。
測(cè)試結(jié)果:單路徑下,All-Gather操作的平均總線帶寬達(dá)到12.04 GB/s。

▲ 測(cè)試結(jié)果截圖
4.4 All-Gather 帶寬測(cè)試(雙路徑)
注意:此步驟選擇物理端口 1 的兩條路徑作為通信接口,以建立雙鏈路。
#指定物理端口1/路徑A和路徑B enp1s0f0np0,enP2p1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0,enP2p1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0,enP2p1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0,enP2p1s0f0np0 #指定兩個(gè)路徑的設(shè)備標(biāo)識(shí) 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
測(cè)試結(jié)果:雙路徑下,All-Gather 操作的平均總線帶寬達(dá)到22.68 GB/s。

▲ 測(cè)試結(jié)果截圖
4.5 All-reduce 帶寬測(cè)試(單路徑)
注意:切換終端時(shí),請(qǐng)勿忘記重新導(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)識(shí) 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
測(cè)試結(jié)果:在單路徑 All-Reduce 測(cè)試中,512MB 大消息量下達(dá)到的12.08 GB/s總線帶寬。

▲ 測(cè)試結(jié)果截圖
4.6 All-reduce 帶寬測(cè)試(雙路徑)
# 指定物理端口1/路徑A和路徑B enp1s0f0np0,enP2p1s0f0np0 作為通信接口 exportUCX_NET_DEVICES=enp1s0f0np0,enP2p1s0f0np0 exportNCCL_SOCKET_IFNAME=enp1s0f0np0,enP2p1s0f0np0 exportOMPI_MCA_btl_tcp_if_include=enp1s0f0np0,enP2p1s0f0np0 #指定兩個(gè)路徑的設(shè)備標(biāo)識(shí) 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
測(cè)試結(jié)果:在雙路徑 All-Reduce 測(cè)試中,512MB 大消息量下達(dá)到的18.02 GB/s總線帶寬。

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

在NVIDIA DGX Spark平臺(tái)上對(duì)NVIDIA ConnectX-7 200G網(wǎng)卡配置教程
評(píng)論