ARM 템플릿을 사용하여 클러스터 배포
Linux 워크로드에 단일 헤드 노드 클러스터를 사용하여 클러스터 배포
Compute Node Image접미사가 있는 접미사가HPC있어야 하며Compute Node VM Size클러스터가 RDMA를 사용할 수 있도록 H 시리즈여야 합니다Standard_H16rStandard_H16mr.
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에 이미 설치되어 있지만 Intel MPI 라이브러리에서 다운로드할 수 있는 OpenFOAM을 빌드하려면 최신 버전이 필요합니다.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을 빌드하기 전에 Linux 컴퓨팅 노드(CentOS)를 설치
zlib-devel하고, 변수WM_MPLIB값을 OpenFOAM 환경 설정 파일bashrc에서SYSTEMOPENMPIINTELMPI변경하고, Intel MPI 환경 설정 파일 및 OpenFOAM 환경 설정 파일을mpivars.sh원본으로Development Tools지정해야 합니다.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공유디렉터리를
/openfoam만들고 clusrun을 사용하여 Linux 컴퓨팅 노드에 공유 탑재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.5원본0.05값과 인/0.50.05인/openfoam/sloshingTank3D/system/controlDict값을writeInterval수정deltaT합니다.사용할 코어 수 측면에서 파일을
/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 foamToEnsight -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 팩 2016 클러스터 관리자에서 작업 결과 확인
샘플 sloshingTank3D의 결과는 Ensight에서 볼 수 있는 파일
\\hpc6267\openfoam\sloshingTank3D\EnSight\sloshingTank3D.case로 생성됩니다.