本文介紹如何開通適配eRDMA的E-HPC Cluster(原E-HPC NEXT),並以OSU-Benchmark應用為例,提供配置運行時參數以使用eRDMA技術加速多節點HPC應用的通訊。
背景資訊
利用eRDMA技術,E-HPC Cluster(原E-HPC NEXT)中的氣候氣象、工業模擬、分子動力等HPC多節點並行任務可達到媲美線下叢集的高速網路效能,包括高頻寬和低延遲,可顯著提升數值類比、模擬的效率。同時,無需額外部署RDMA網卡,即可在現有業務組網中體驗到RDMA的優勢,實現無縫整合和便捷應用。
準備工作
-
單擊前往建立叢集頁面,建立一個E-HPC叢集。具體操作,請參見建立標準版叢集。
本文使用的叢集配置樣本如下:
-
執行個體規格:採用ecs.c7.xlarge執行個體規格,該規格配置為4 vCPU,8 GiB記憶體。
-
鏡像:aliyun_2_1903_x64_20G_alibase_20240628.vhd
說明osu-benchmark安裝包基於Alibaba Cloud Linux 2.1903 LTS 64位鏡像完成構建。
-
erdma-installer
-
mpich-aocc
-
執行個體規格:採用ecs.c7.xlarge執行個體規格,該規格配置為4 vCPU,8 GiB記憶體。
-
鏡像:aliyun_2_1903_x64_20G_alibase_20240628.vhd
-
建立一個叢集使用者,具體操作,請參見使用者管理。
|
配置項 |
配置 |
|
|
叢集配置 |
地區 |
上海 |
|
網路及可用區 |
選擇可用性區域L |
|
|
系列 |
標準版 |
|
|
部署模式 |
公用雲叢集 |
|
|
叢集類型 |
SLURM |
|
|
管理節點 |
|
|
|
計算節點與隊列 |
队列节点数 |
初始節點 |
|
節點間互聯 |
eRDMA網路 說明
僅部分節點規格支援ERI,更多資訊,請參見彈性RDMA(eRDMA)和在企業級執行個體上啟用eRDMA。 |
|
|
執行個體規格組 |
執行個體規格:採用ecs.c8ae.xlarge或同代的其他AMD執行個體。 鏡像:aliyun_2_1903_x64_20G_alibase_20240628.vhd |
|
|
共享檔案儲存體 |
/home 叢集掛載目錄 |
預設情況下,管理節點的 |
|
/opt 叢集掛載目錄 |
||
|
軟體與服務元件 |
待安裝軟體 |
|
|
可安裝服務元件 |
登入節點: |
檢查eRDMA環境
檢查計算節點eRDMA配置是否正確。
-
登入彈性高效能運算控制台,單擊目的地組群。
-
在頁面,選中叢集中所有計算節點,單擊發送命令。
-
檢查計算節點的 eRDMA 網路狀態 和 RDMA 硬體/軟體支援情況。
-
發送如下命令到所有計算節點。
hpcacc erdma check在雲助手發送命令對話方塊中,選擇目標執行個體,執行計畫選擇立即執行,命令類型選擇Shell,逾時時間設為60秒,單擊執行。
-
返回如下結果,表示eRDMA配置正確。
{"Success": true, "Message": {"Msg": "HPCACC eRDMA status check succeeded. No fault found."}} -
如果返回資訊異常,執行以下命令進行修複。
hpcacc erdma repair -
修複完成後,再次確認eRDMA配置正確即可。
-
OSU-Benchmark測試
OSU-Benchmark用於評估Alibaba Cloud HPC叢集和分布式系統的通訊效能。本文利用以下2個基準測試,基於不同網路通訊協定(TCP vs. RDMA)測試通訊效能:
-
網路延遲測試(osu_latency):測量點對點通訊的單向延遲(從進程A發送訊息到進程B的時間,不含返回時間),尤其關注小訊息(如1位元組到數KB)的通訊效率。小訊息的延遲反映了網路硬體的底層效能(如RDMA加速能力)和MPI庫的最佳化水平,是HPC系統響應能力的核心指標。例如,在即時模擬或機器學習參數同步中,低延遲能顯著減少通訊開銷。
-
網路頻寬測試(osu_bw):測量點對點通訊的可持續頻寬(單位時間內傳輸的資料量),關注大訊息(如數KB到數MB)的傳輸效率。頻寬效能直接影響巨量資料傳輸的效率,如科學計算中的矩陣交換或檔案I/O情境。若實測頻寬遠低於理論值,可能需最佳化MPI配置(如多線程通訊)或檢查網路設定(如MTU、流控)。
測試過程如下:
-
使用已經建立的使用者,串連EHPC叢集。詳細資料,請參見串連叢集。
-
執行以下命令,檢查依賴環境組件是否正確安裝。
module avail -
執行以下命令,下載並解壓已先行編譯的osu-benchmark安裝包。
cd ~ && wget https://ehpc-perf.oss-cn-hangzhou.aliyuncs.com/AMD-Genoa/osu-bin.tar.gz tar -zxvf osu-bin.tar.gz -
執行以下命令,進入測試工作目錄並編輯slurm作業指令碼。
cd ~/pt2pt vim slurm.job測試指令碼內容如下:
#!/bin/bash #SBATCH --job-name=osu-bench #SBATCH --ntasks-per-node=1 #SBATCH --nodes=2 #SBATCH --partition=comp #SBATCH --output=%j.out #SBATCH --error=%j.out # load env params module purge module load aocc/4.0.0 gcc/12.3.0 libfabric/1.16.0 mpich-aocc/4.0.3 # run mpi latency test: erdma echo -e "++++++ use erdma for osu_lat: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_latency echo -e "------ use erdma for osu_lat: END\n" # run mpi latency test: tcp echo -e "++++++ use tcp for osu_lat: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_latency echo -e "------ use erdma for osu_lat: END\n" # run mpi bandwidth test: erdma echo -e "++++++ use erdma for osu_bw: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="verbs;ofi_rxm" ./osu_bw echo -e "------ use erdma for osu_bw: END\n" # run mpi bandwidth test: tcp echo -e "++++++ use tcp for osu_bw: START" mpirun -np 2 -ppn 1 -genv FI_PROVIDER="tcp;ofi_rxm" ./osu_bw echo -e "------ use tcp for osu_bw: END\n"說明-
-np 2:指定總的進程數量,這裡設定為2,意味著整個MPI作業將啟動兩個進程。 -
-ppn 1:指定每個節點上的進程數,這裡設定為1,表示每個節點運行1個進程。 -
-genv:設定環境變數,對所有進程生效。-
FI_PROVIDER="tcp;ofi_rxm":使用TCP 協議,並通過 RXM 架構增強通訊可靠性。 -
FI_PROVIDER="verbs;ofi_rxm":優先使用高效能 Verbs 協議(基於 RDMA),並通過 RXM 架構最佳化訊息傳輸。本文中使用阿里雲eRDMA提供高效能彈性RDMA網路。
-
-
-
執行以下命令,提交測試作業。
sbatch slurm.job命令列輸出job id。
-
執行以下命令,查看作業運行。測試過程中,您也可以在控制台上查看E-HPC的監控資訊(包括儲存監控、作業監控、節點監控等)。詳細資料,請參見查看監控資訊。
squeue[zh***luster@login0 pt2pt]$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 11 comp slurm.jo zhtestcl R 0:01 2 compute[000-001]您可以在目前的目錄下,查看job id對應的記錄檔,輸出內容如下所示:
-
網路延遲測試結果:訊息大小(Size,單位為位元組Bytes,範圍為1B到4MB)與網路延遲(Avg Latency)的關係。本文中測試結果樣本如下:
使用Verbs 協議(基於eRDMA)
[zxxx@login0 pt2pt]$ cat 11.out ++++++ use erdma for osu_lat: START # OSU MPI Latency Test v7.5 # Datatype: MPI_CHAR. # Size Avg Latency(us) 1 11.01 2 11.04 4 11.48 8 11.33 16 11.02 32 11.10 64 11.15 128 11.29 256 11.36 512 11.39 1024 11.81 2048 12.99 4096 13.95 8192 15.92 16384 34.57 32768 37.15 65536 41.15 131072 47.10 262144 61.17 524288 143.06 1048576 332.54 2097152 659.65 4194304 1315.29 ------ use erdma for osu_lat: END使用TCP協議
++++++ use tcp for osu_lat: START # OSU MPI Latency Test v7.5 # Datatype: MPI_CHAR. # Size Avg Latency(us) 1 16.07 2 16.02 4 16.03 8 16.03 16 16.01 32 16.27 64 16.37 128 16.87 256 17.36 512 17.89 1024 18.56 2048 33.78 4096 33.39 8192 30.74 16384 45.17 32768 94.50 65536 107.07 131072 124.95 262144 160.55 524288 238.40 1048576 374.89 2097152 639.81 4194304 1188.98 ------ use erdma for osu_lat: END通過測試資料可以發現,對於小訊息(1B~8KB),eRDMA的延遲明顯低於TCP。
-
網路頻寬測試結果:訊息大小(Size,單位為位元組Bytes,範圍為1B到4MB)與頻寬(Bandwidth)的關係。本文中測試結果樣本如下:
使用Verbs 協議(基於eRDMA)
++++++ use erdma for osu_bw: START # OSU MPI Bandwidth Test v7.5 # Datatype: MPI_CHAR. # Size Bandwidth (MB/s) 1 1.09 2 2.21 4 4.43 8 8.91 16 17.98 32 35.88 64 69.93 128 137.73 256 258.35 512 541.90 1024 1023.92 2048 1768.96 4096 2918.97 8192 3984.86 16384 5203.51 32768 6264.41 65536 1661.85 131072 1696.79 262144 1535.17 524288 1587.83 1048576 1637.65 2097152 1636.63 4194304 1637.17 ------ use erdma for osu_bw: END使用TCP協議
++++++ use tcp for osu_bw: START # OSU MPI Bandwidth Test v7.5 # Datatype: MPI_CHAR. # Size Bandwidth (MB/s) 1 0.38 2 0.75 4 1.51 8 3.01 16 5.95 32 12.10 64 23.43 128 46.30 256 88.25 512 167.70 1024 343.96 2048 614.60 4096 1183.85 8192 1567.03 16384 1835.89 32768 1731.67 65536 2904.03 131072 3160.96 262144 1876.96 524288 1730.89 1048576 1733.18 2097152 1736.09 4194304 1735.78 ------ use tcp for osu_bw: END通過測試資料可以發現,在訊息大小為16KB ~ 64KB時,eRDMA充分利用了網路頻寬,而TCP的協議棧處理引入額外開銷。
-