共用方式為


在 Azure 中建立 HPC Pack Linux RDMA 叢集

使用ARM範本部署叢集

執行 Intel MPI 效能評定 Pingpong

  • 登入前端節點 hpc6267 並讓節點上線

    節點

  • 提交作業以在Linux計算節點之間執行 MPI Pingpong

    job submit /numnodes:2 "source /opt/intel/impi/`ls /opt/intel/impi`/bin64/mpivars.sh && mpirun -env I_MPI_FABRICS=shm:dapl -env I_MPI_DAPL_PROVIDER=ofa-v2-ib0 -env I_MPI_DYNAMIC_CONNECTION=0 -env I_MPI_FALLBACK_DEVICE=0 -f $CCP_MPI_HOSTFILE -ppn 1 IMB-MPI1 pingpong | tail -n30"
    
  • 系統會自動產生 MPI 工作的主機檔案或電腦檔案

    • 環境變數 $CCP_MPI_HOSTFILE 可用於工作命令以取得檔名

    • 環境變數 $CCP_MPI_HOSTFILE_FORMAT 可以設定為指定主機檔案或計算機檔案的格式

      • 預設主機檔案格式如下:

        nodename1
        nodename2
        …
        nodenameN
        
      • 當 為 時 $CCP_MPI_HOSTFILE_FORMAT=1,格式如下:

        nodename1:4
        nodename2:4
        …
        nodenameN:4
        
      • 當 為 時 $CCP_MPI_HOSTFILE_FORMAT=2,格式如下:

        nodename1 slots=4
        nodename2 slots=4
        …
        nodenameN slots=4
        
      • 當 為 時 $CCP_MPI_HOSTFILE_FORMAT=3,格式如下:

        nodename1 4
        nodename2 4
        …
        nodenameN 4
        
  • 檢查 HPC Pack 2016 叢集管理員中的工作結果

    pingpong

執行 OpenFOAM 工作負載

下載並安裝 Intel MPI

  • Intel MPI 已安裝在 Linux 映射CentOS_7.4_HPC中,但建置 OpenFOAM 需要較新版本,您可以從 Intel MPI 連結庫下載。

  • 使用 clusrun 下載並以無訊息方式安裝 Intel MPI

    clusrun /nodegroup:LinuxNodes /interleaved "wget https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/13063/l_mpi_2018.3.222.tgz && tar -zxvf l_mpi_2018.3.222.tgz && sed -i -e 's/ACCEPT_EULA=decline/ACCEPT_EULA=accept/g' ./l_mpi_2018.3.222/silent.cfg && ./l_mpi_2018.3.222/install.sh --silent ./l_mpi_2018.3.222/silent.cfg"
    

下載並編譯 OpenFOAM

  • 您可以從 OpenFOAM 下載頁面下載 OpenFOAM 套件

  • 在建置 OpenFOAM 之前,我們需要在 zlib-devel Linux 計算節點(CentOS)上安裝 和 Development Tools ,以將變數 WM_MPLIB 的值從 SYSTEMOPENMPI 變更為 INTELMPI OpenFOAM 環境設定檔案 bashrc,以及來源 Intel MPI 環境配置檔和 OpenFOAM 環境 mpivars.sh 設定檔案 bashrc

  • 您可以選擇性地將環境變數 WM_NCOMPPROCS 設定為指定要用於編譯 OpenFoam 的處理器數目,以加速編譯

  • 使用 clusrun 來達成上述所有目標

    clusrun /nodegroup:LinuxNodes /interleaved "yum install -y zlib-devel && yum groupinstall -y 'Development Tools' && wget https://sourceforge.net/projects/openfoamplus/files/v1806/ThirdParty-v1806.tgz && wget https://sourceforge.net/projects/openfoamplus/files/v1806/OpenFOAM-v1806.tgz && mkdir /opt/OpenFOAM && tar -xzf OpenFOAM-v1806.tgz -C /opt/OpenFOAM && tar -xzf ThirdParty-v1806.tgz -C /opt/OpenFOAM && cd /opt/OpenFOAM/OpenFOAM-v1806/ && sed -i -e 's/WM_MPLIB=SYSTEMOPENMPI/WM_MPLIB=INTELMPI/g' ./etc/bashrc && source /opt/intel/impi/2018.3.222/bin64/mpivars.sh && source ./etc/bashrc && export WM_NCOMPPROCS=$((`grep -c ^processor /proc/cpuinfo`-1)) && ./Allwmake"
    

在叢集中建立共用

  • 在前端節點上建立名為 openfoam 的資料夾,並將它 EveryoneRead/Write 許可權共用

  • 使用 clusrun 在 Linux 計算節點上建立目錄 /openfoam 並掛接共用

    clusrun /nodegroup:LinuxNodes "mkdir /openfoam && mount -t cifs //hpc6267/openfoam /openfoam -o vers=2.1,username=hpcadmin,dir_mode=0777,file_mode=0777,password='********'"
    

    請記得在複製時取代上述程式代碼中的使用者名稱和密碼。

準備環境配置檔以執行 MPI 工作

  • 使用程式代碼在共用中建立檔案 settings.sh

    #!/bin/bash
    # impi
    source /opt/intel/impi/2018.3.222/bin64/mpivars.sh
    export MPI_ROOT=$I_MPI_ROOT
    export I_MPI_FABRICS=shm:dapl
    export I_MPI_DAPL_PROVIDER=ofa-v2-ib0
    export I_MPI_DYNAMIC_CONNECTION=0
    # openfoam
    source /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc
    

    在前端節點上編輯檔案時,請小心行尾結尾,這應該 \n 不是 \r\n

準備 OpenFOAM 作業的範例數據

  • 將 OpenFOAM 教學課程目錄中的範例 sloshingTank3D 複製到共用 openfoam

  • 或者,將的值0.05從修改為 0.5 ,並將 writeInterval 的值0.05從 修改deltaT0.5/openfoam/sloshingTank3D/system/controlDict以加速數據處理

  • 根據要使用的核心號碼修改檔案 /openfoam/sloshingTank3D/system/decomposeParDict ,更多請參閱 OpenFOAM 使用者指南:3.4 平行執行應用程式

    /*--------------------------------*- C++ -*----------------------------------*\
    | =========                 |                                                 |
    | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \\    /   O peration     | Version:  v1806                                 |
    |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
    |    \\/     M anipulation  |                                                 |
    \*---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        object      decomposeParDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    numberOfSubdomains 32;
    
    method          hierarchical;
    
    coeffs
    {
        n           (1 1 32);
        //delta       0.001; // default=0.001
        //order       xyz;   // default=xzy
    }
    
    distributed     no;
    
    roots           ( );
    
    // ************************************************************************* //
    
  • 在中 /openfoam/sloshingTank3D準備範例數據。 在 Linux 計算節點上手動執行下列程式代碼時,可以使用下列程式代碼:

    cd /openfoam/sloshingTank3D
    source /openfoam/settings.sh
    source /home/hpcadmin/OpenFOAM/OpenFOAM-v1806/bin/tools/RunFunctions
    m4 ./system/blockMeshDict.m4 > ./system/blockMeshDict
    runApplication blockMesh
    cp ./0/alpha.water.orig ./0/alpha.water
    runApplication setFields
    
  • 提交作業以達成上述所有目標

    set CORE_NUMBER=32
    job submit "cp -r /opt/OpenFOAM/OpenFOAM-v1806/tutorials/multiphase/interFoam/laminar/sloshingTank3D /openfoam/ && sed -i 's/deltaT          0.05;/deltaT          0.5;/g' /openfoam/sloshingTank3D/system/controlDict &&  sed -i 's/writeInterval   0.05;/writeInterval   0.5;/g' /openfoam/sloshingTank3D/system/controlDict && sed -i 's/numberOfSubdomains 16;/numberOfSubdomains %CORE_NUMBER%;/g' /openfoam/sloshingTank3D/system/decomposeParDict && sed -i 's/n           (4 2 2);/n           (1 1 %CORE_NUMBER%);/g' /openfoam/sloshingTank3D/system/decomposeParDict && cd /openfoam/sloshingTank3D/ && m4 ./system/blockMeshDict.m4 > ./system/blockMeshDict && source /opt/OpenFOAM/OpenFOAM-v1806/bin/tools/RunFunctions && source /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc && runApplication blockMesh && cp ./0/alpha.water.orig ./0/alpha.water && runApplication setFields"
    

建立包含要處理日期之 MPI 工作的作業

  • 建立作業並新增 4 個具有相依性的工作

    工作名稱 相依工作 核心 指令 環境變數
    task1 N/A 1 source /openfoam/settings.sh && decomposePar -force N/A
    task2 task1 32 source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE interFoam -parallel CCP_MPI_HOSTFILE_FORMAT=1
    task3 task2 1 source /openfoam/settings.sh && reconstructPar N/A
    task4 task3 32 source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE 泡沫ToEnsight -parallel CCP_MPI_HOSTFILE_FORMAT=1
  • 將工作目錄設定為 , /openfoam/sloshingTank3D 並將標準輸出設定為 ${CCP_JOBID}.${CCP_TASKID}.log 每個工作

  • 使用命令達成上述所有專案:

    set CORE_NUMBER=32
    job new
    job add !! /workdir:/openfoam/sloshingTank3D /name:task1 /stdout:${CCP_JOBID}.${CCP_TASKID}.log "source /openfoam/settings.sh && decomposePar -force"
    job add !! /workdir:/openfoam/sloshingTank3D /name:task2 /stdout:${CCP_JOBID}.${CCP_TASKID}.log /depend:task1 /numcores:%CORE_NUMBER% /env:CCP_MPI_HOSTFILE_FORMAT=1 "source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE interFoam -parallel"
    job add !! /workdir:/openfoam/sloshingTank3D /name:task3 /stdout:${CCP_JOBID}.${CCP_TASKID}.log /depend:task2 "source /openfoam/settings.sh && reconstructPar"
    job add !! /workdir:/openfoam/sloshingTank3D /name:task4 /stdout:${CCP_JOBID}.${CCP_TASKID}.log /depend:task3 /numcores:%CORE_NUMBER% /env:CCP_MPI_HOSTFILE_FORMAT=1 "source /openfoam/settings.sh && mpirun -machinefile $CCP_MPI_HOSTFILE foamToEnsight -parallel"
    job submit /id:!!
    

取得結果

  • 檢查 HPC Pack 2016 叢集管理員中的作業結果

    openfoam

  • 範例 sloshingTank3D 的結果會以檔案\\hpc6267\openfoam\sloshingTank3D\EnSight\sloshingTank3D.case的形式產生,可由 Ensight 檢視