全部產品
Search
文件中心

Elastic High Performance Computing:使用IMB軟體和MPI通訊庫測試叢集通訊效能

更新時間:Jul 06, 2024

本文以IMB軟體和MPI通訊庫為例介紹如何測試E-HPC叢集的通訊效能。

背景資訊

IMB(Intel MPI Benchmarks)用於評估HPC叢集在不同訊息粒度下節點間點對點、全域通訊的效率。

MPI(Message Passing Interface)是支援多程式設計語言編程的並行計算通訊庫,具有高效能、大規模性、可移植性、可擴充性等特點。

準備工作

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

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

    參數

    說明

    硬體參數

    部署方式為精簡,包含1個管控節點和2個計算節點,其中計算節點請選擇vCPU核心數≥8的規格,本文使用2個ecs.c7.2xlarge作為樣本。

    軟體參數

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

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

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

    • 使用者名稱:mpitest

    • 使用者組:sudo許可權組

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

    需安裝的軟體如下:

    • intel-mpi,版本為2018。

    • intel-mpi-benchmarks,版本為2019。

步驟一:串連叢集

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

  • 通過用戶端

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

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

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

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

  • 通過控制台

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

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

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

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

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

步驟二:提交作業

  1. 執行以下命令建立作業指令檔,指令檔命名為imb.pbs。

    vim imb.pbs

    指令碼內容樣本如下:

    #!/bin/sh
    #PBS -j oe
    #PBS -l select=2:ncpus=8:mpiprocs=1 
    export MODULEPATH=/opt/ehpcmodulefiles/
    module load intel-mpi/2018
    module load intel-mpi-benchmarks/2019
    echo "run at the beginning"
    /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np 2 -ppn 1 -host compute000,compute001 /opt/intel-mpi-benchmarks/2019/IMB-MPI1 pingpong > IMB-pingpong   #請根據實際調整參數
    • 指令碼樣本使用2個計算節點,每個節點為8 vCPU,使用一個MPI任務進行高效能運算。實際測試中請根據節點配置修改#PBS -l select=2:ncpus=8:mpiprocs=1

    • 您可以根據實際需求修改指令碼中/opt/intel/impi/2018.3.222/bin64/mpirun命令的參數。參數說明如下:

      • -ppn:指定每個節點的進程數

      • -host:指定任務節點列表

      • -npmin:指定最少啟動並執行進程數

      • -msglog:指定訊息片粒度範圍

      說明

      通過/opt/intel-mpi-benchmarks/2019/IMB-MPI1 -h可以查看IMB支援的通訊模式及詳細參數說明。

      命令樣本如下:

      • 樣本一:測試N個節點間allreduce通訊模式效率,每個節點開啟2個進程,擷取不同訊息粒度下的通訊時間。

        /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N*2> -ppn 2 -host <node0>,...,<nodeN> /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 2 -msglog 19:21 allreduce   
      • 樣本二:測試N個節點間alltoall通訊模式效率,每個節點開啟1個進程,擷取不同訊息粒度下的通訊時間。

        /opt/intel/impi/2018.3.222/bin64/mpirun -genv I_MPI_DEBUG 5 -np <N> -ppn 1 -host <node0>,...,<nodeN> /opt/intel-mpi-benchmarks/2019/IMB-MPI1 -npmin 1 -msglog 15:17 alltoall
  2. 執行以下命令提交作業。

    qsub imb.pbs

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

    0.manager

步驟三:查看作業結果

  1. 查看作業運行情況。

    qstat -x 0.manager

    預期返回如下,當返回資訊中SR時,表示作業正在運行中;當返回資訊中SF時,表示作業已經運行結束。

    Job id            Name             User              Time Use S Queue
    ----------------  ---------------- ----------------  -------- - -----
    0.manager         imb.pbs          mpitest           00:00:04 F workq  
  2. 查看作業結果。

    cat /home/mpitest/IMB-pingpong

    本次測試結果如下:

    IBM-結果..png