使用ARM範本部署叢集
針對 Linux工作負載使用單一前端節點叢集 來部署叢集
請注意,
Compute Node Image
應該是後綴HPC
為 ,且Compute Node VM Size
應該為Standard_H16r
或Standard_H16mr
H 系列 ,讓叢集能夠支援 RDMA。
執行 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 叢集管理員中的工作結果
執行 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
的資料夾,並將它Everyone
與Read/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
從 修改deltaT
為0.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 叢集管理員中的作業結果
範例 sloshingTank3D 的結果會以檔案
\\hpc6267\openfoam\sloshingTank3D\EnSight\sloshingTank3D.case
的形式產生,可由 Ensight 檢視