本文介紹如何使用HPL測試E-HPC叢集的浮點效能。

背景資訊

HPL(The High-Performance Linpack Benchmark)是測試高效能運算叢集系統浮點效能的基準。HPL通過對高效能運算叢集採用高斯消元法求解一元N次稠密線性代數方程組的測試,評價高效能運算叢集的浮點計算能力。

浮點計算峰值是指電腦每秒可以完成的浮點計算次數,包括理論浮點峰值和實測浮點峰值。理論浮點峰值是該電腦理論上每秒可以完成的浮點計算次數,主要由CPU的主頻決定。理論浮點峰值=CPU主頻×CPU核心數×CPU每周期執行浮點運算的次數。本文將為您介紹如何利用HPL測試實測浮點峰值。

準備工作

  1. 建立一個E-HPC叢集。具體操作,請參見 使用嚮導建立叢集

    配置叢集時,軟硬體參數配置如下:

    參數

    說明

    硬體參數

    部署方式為精簡,包含1個管控節點和1個計算節點,規格如下:

    • 管控節點:採用ecs.c7.large執行個體規格,該規格配置為2 vCPU,4 GiB記憶體。

    • 計算節點:採用ecs.ebmc5s.24xlarge執行個體規格,該規格配置為96 vCPU、192 GiB記憶體。

    軟體參數

    鏡像選擇CentOS 7.6公用鏡像,調度器選擇pbs。

  2. 建立一個叢集使用者。具體操作,請參見 建立使用者

    叢集使用者用於登入叢集,進行編譯軟體、提交作業等操作。本文建立的使用者樣本如下:

    • 使用者名稱:hpltest

    • 使用者組:sudo許可權組

  3. 安裝軟體。具體操作,請參見 安裝軟體

    需安裝的軟體如下:

    • linpack,版本為2018。

    • intel-mpi,版本為2018。

步驟一:串連叢集

選擇以下一種方式串連叢集。本文使用的使用者名稱為hpltest,串連叢集後會預設登入到 /home/hpltest

  • 通過用戶端

    該方式僅支援使用PBS調度器的叢集。操作前,請確保您已下載安裝E-HPC用戶端,且已配置用戶端所需環境。具體操作,請參見 配置用戶端所需環境

    1. 開啟並登入E-HPC用戶端。

    2. 在用戶端左側導覽列,單擊 會話管理

    3. 會話管理 頁面的右上方,單擊 terminal ,開啟Terminal視窗。

  • 通過控制台

    1. 登入 彈性高效能運算控制台

    2. 在頂部功能表列左上方處,選擇地區。

    3. 在左側導覽列,單擊 叢集

    4. 叢集 頁面,找到目的地組群,單擊 遠端連線

    5. 遠端連線 頁面,輸入集群使用者名稱、登入密碼和連接埠,單擊 ssh串連

步驟二:提交作業

  1. 執行以下命令建立算例檔案,算例檔案命名為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的冪時效能最優。

  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   #測試多節點的浮點效能,<>裡的內容請根據實際替換
  3. 執行以下命令提交作業。

    qsub hpl.pbs

    返回樣本如下,表示產生的作業ID為0.manager。

    0.manager

步驟三:查看作業結果

  1. 查看作業運行情況。

    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 
  2. 查看作業結果。

    cat /home/hpltest/hpl-output

    本次測試結果如下:

    hpl..png