本文介紹如何使用HPL測試E-HPC叢集的浮點效能。
背景資訊
HPL(The High-Performance Linpack Benchmark)是測試高效能運算叢集系統浮點效能的基準。HPL通過對高效能運算叢集採用高斯消元法求解一元N次稠密線性代數方程組的測試,評價高效能運算叢集的浮點計算能力。
浮點計算峰值是指電腦每秒可以完成的浮點計算次數,包括理論浮點峰值和實測浮點峰值。理論浮點峰值是該電腦理論上每秒可以完成的浮點計算次數,主要由CPU的主頻決定。理論浮點峰值=CPU主頻×CPU核心數×CPU每周期執行浮點運算的次數。本文將為您介紹如何利用HPL測試實測浮點峰值。
準備工作
-
建立一個E-HPC叢集。具體操作,請參見 使用嚮導建立叢集 。
配置叢集時,軟硬體參數配置如下:
參數
說明
硬體參數
部署方式為精簡,包含1個管控節點和1個計算節點,規格如下:
-
管控節點:採用ecs.c7.large執行個體規格,該規格配置為2 vCPU,4 GiB記憶體。
-
計算節點:採用ecs.ebmc5s.24xlarge執行個體規格,該規格配置為96 vCPU、192 GiB記憶體。
軟體參數
鏡像選擇CentOS 7.6公用鏡像,調度器選擇pbs。
-
-
建立一個叢集使用者。具體操作,請參見 建立使用者 。
叢集使用者用於登入叢集,進行編譯軟體、提交作業等操作。本文建立的使用者樣本如下:
-
使用者名稱:hpltest
-
使用者組:sudo許可權組
-
-
安裝軟體。具體操作,請參見 安裝軟體 。
需安裝的軟體如下:
-
linpack,版本為2018。
-
intel-mpi,版本為2018。
-
步驟一:串連叢集
選擇以下一種方式串連叢集。本文使用的使用者名稱為hpltest,串連叢集後會預設登入到
/home/hpltest
。
-
通過用戶端
該方式僅支援使用PBS調度器的叢集。操作前,請確保您已下載安裝E-HPC用戶端,且已配置用戶端所需環境。具體操作,請參見 配置用戶端所需環境 。
-
開啟並登入E-HPC用戶端。
-
在用戶端左側導覽列,單擊 會話管理 。
-
在 會話管理 頁面的右上方,單擊 terminal ,開啟Terminal視窗。
-
-
通過控制台
-
登入 彈性高效能運算控制台 。
-
在頂部功能表列左上方處,選擇地區。
-
在左側導覽列,單擊 叢集 。
-
在 叢集 頁面,找到目的地組群,單擊 遠端連線 。
-
在 遠端連線 頁面,輸入集群使用者名稱、登入密碼和連接埠,單擊 ssh串連 。
-
步驟二:提交作業
-
執行以下命令建立算例檔案,算例檔案命名為HPL.dat。
vim HPL.dat
算例檔案HPL.dat包含了HPL啟動並執行參數。如下樣本是在單台ecs.ebmc5s.24xlarge執行個體上運行HPL的推薦配置。
HPLinpack benchmark input file Innovative Computing Laboratory, University of Tennessee HPL.out output file name (if any) 6 device out (6=stdout,7=stderr,file) 1 # of problems sizes (N) 143600 Ns 1 # of NBs 384 NBs 1 PMAP process mapping (0=Row-,1=Column-major) 1 # of process grids (P x Q) 1 Ps 1 Qs 16.0 threshold 1 # of panel fact 2 PFACTs (0=left, 1=Crout, 2=Right) 1 # of recursive stopping criterium 2 NBMINs (>= 1) 1 # of panels in recursion 2 NDIVs 1 # of recursive panel fact. 1 RFACTs (0=left, 1=Crout, 2=Right) 1 # of broadcast 0 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM) 1 # of lookahead depth 0 DEPTHs (>=0) 0 SWAP (0=bin-exch,1=long,2=mix) 1 swapping threshold 1 L1 in (0=transposed,1=no-transposed) form 1 U in (0=transposed,1=no-transposed) form 0 Equilibration (0=no,1=yes) 8 memory alignment in double (> 0)
您可以根據節點的硬體設定,調整HPL.dat檔案中相關參數,參數的說明如下所示:
-
第5~6行內容。
1 # of problems sizes (N) 143600 Ns
N表示求解的矩陣數量與規模。矩陣規模N越大,有效計算所佔的比例也越大,系統浮點處理效能也就越高。但矩陣規模越大會導致記憶體消耗量越多,如果系統實際記憶體空間不足,使用緩衝、效能會大幅度降低。矩陣佔用系統總記憶體的80%左右為最佳,即N×N×8=系統總記憶體×80%(其中總記憶體的單位為位元組)。
-
第7~8行內容。
1 # of NBs 384 NBs
NB表示求解矩陣過程中矩陣分塊的大小。分塊大小對效能有很大的影響,NB的選擇和軟硬體許多因素密切相關。NB值的選擇主要是通過實際測試得出最優值,一般遵循以下規律:
-
NB不能太大或太小,一般小於384。
-
NB×8一定是緩衝行的倍數。
-
NB的大小和通訊方式、矩陣規模、網路、處理器速度等有關係。
一般通過單節點或單CPU測試可以得到幾個較好的NB值,但當系統規模增加、問題規模變大,有些NB取值所得效能會下降。因此建議在小規模測試時選擇3個效能不錯的NB值,再通過大規模測試檢驗這些選擇。
-
-
第10~12行內容。
1 # of process grids (P x Q) 1 Ps 1 Qs
P表示水平方向處理器個數,Q表示垂直方向處理器個數。P×Q表示二維處理器網格。P×Q=進程數。一般情況下一個進程對應一個CPU,可以得到最佳效能。對於處理器為Intel ® Xeon ® 的ECS執行個體,關閉超執行緒可以提高HPL效能。P和Q的取值一般遵循以下規律:
-
P≤Q,一般情況下P的取值小於Q,因為列向通訊量(通訊次數和通訊資料量)要遠大於橫向通訊。
-
P建議選擇2的冪。HPL中水平方向通訊採用二元交換法(Binary Exchange),當水平方向處理器個數P為2的冪時效能最優。
-
-
-
執行以下命令建立作業指令檔,指令檔命名為hpl.pbs。
vim hpl.pbs
指令碼內容樣本如下:
說明本樣本測試單節點的實測浮點峰值。如果您想測試多個節點的實測浮點峰值,可以修改指令碼內容。
#!/bin/sh #PBS -j oe export MODULEPATH=/opt/ehpcmodulefiles/ module load linpack/2018 module load intel-mpi/2018 echo "run at the beginning" mpirun -n 1 -host compute000 /opt/linpack/2018/xhpl_intel64_static > hpl-output #測試單節點的浮點效能,compute000為運行作業的節點名稱,請自行替換 #mpirun -n <N> -ppn 1 -host <node0>,...,<nodeN> /opt/linpack/2018/xhpl_intel64_static > hpl-output #測試多節點的浮點效能,<>裡的內容請根據實際替換
-
執行以下命令提交作業。
qsub hpl.pbs
返回樣本如下,表示產生的作業ID為0.manager。
0.manager
步驟三:查看作業結果
-
查看作業運行情況。
qstat -x 0.manager
預期返回如下,當返回資訊中
S
為R
時,表示作業正在運行中;當返回資訊中S
為F
時,表示作業已經運行結束。Job id Name User Time Use S Queue ---------------- ---------------- ---------------- -------- - ----- 0.manager hpl.pbs hpltest 11:01:49 F workq
-
查看作業結果。
cat /home/hpltest/hpl-output
本次測試結果如下: