OpenFOAM-5.x 버전 설치 소개(KNL)
이 문서에서는 SKL 계산노드용 OpenFOAM-5.x 을 컴파일 하여 설치 하는 방법에 대해 예시로 소개합니다.
가. 설치 환경
대상 시스템
누리온
OS Version
리눅스 / CentOS 7.9
CPU
Intel Xeon Phi 7250 Intel Xeon 6148
컴파일러
Intel 2018.3
MPI
IntelMPI 2018.3
기타
나. 설치 전 환경 설정
OpenFOAM-v5.x 버전 설치에 필요한 gmp, mpfr, mpc, boost, CGAL 는 누리온 시스템에 미리 설치된 /apps/common 라이브러리들을 사용합니다. 만약 다른 버전의 gmp, mpfr, mpc, boost, CGAL 가 필요한 경우는 사용자의 홈 디렉터리(/home01/$USER)나 scratch 디렉터리(/scratch/$USER)에 설치 후 환경 설정을 해서 사용하시면 됩니다.
$ module purge
$ module load cmake/3.12.3
$ module load intel/18.0.3 impi/18.0.3
다. OpenFOAM-v5.0 버전 설치 과정
설치 과정 소개는 tar 를 이용한 압축 해제 방법과 설정 방법등 진행 절차를 위주로 설명하고, 소스 파일 다운로드 등은 생략합니다. 설치 소개 시 사용된 경로 $HOME/OpenFOAM-5.0/KNL 는 설치 안내를 위한 경로이므로, 설치하시고자 하는 경로를 입력하여 설치 진행하시기 바랍니다.
$ cd $HOME/OpenFOAM-5.0/KNL
$ mkdir OpenFOAM
$ cd OpenFOAM
$ tar -xzf OpenFOAM-5.x-version-5.0.tar.gz
$ tar -xzf ThirdParty-5.x-version-5.0.tar.gz
$ mv OpenFOAM-5.x-version-5.0 OpenFOAM-5.0
$ mv ThirdParty-5.x-version-5.0 ThirdParty-5.0
$ vi OpenFOAM-5.0/etc/config.sh/settings
- - - [settings 수정 사항] 참고 - - -
$ vi OpenFOAM-5.0/etc/bashrc
- - - [bashrc 수정 사항] 참고 - - -
$ vi ThirdParty-5.0/makeCGAL
- - - [makeCGAL 수정 사항] 참고 - - -
$ vi OpenFOAM-5.0/etc/config.sh/mpi
- - - [mpi 수정 사항] 참고 - - -
$ vi OpenFOAM-5.0/wmake/rules/linux64Icc/c++
- - - [c++ 수정 사항] 참고 - - -
$ vi ThirdParty-5.0/scotch_6.0.3/src/Make.inc/Makefile.inc.x86-64_pc_linux2.icc
- - - [Makefile.inc.x86-64_pc_linux2.icc 수정 사항] 참고 - - -
$ vi ThirdParty-5.0/etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM
- - - [Makefile.inc.i686_pc_linux2.shlib-OpenFOAM 수정 사항] 참고 - - -
$ sed -i -e 's/\(boost_version=\)boost-system/\1boost_1_68_0/' OpenFOAM-5.0/etc/config.sh/CGAL
$ sed -i -e 's/\(cgal_version=\)cgal-system/\1CGAL-4.9.1/' OpenFOAM-5.0/etc/config.sh/CGAL
$ source OpenFOAM-5.0/etc/bashrc $ mkdir -p $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER
$ ln -s /apps/common/gmp/6.1.2 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/gmp-system
$ ln -s /apps/common/mpfr/4.0.1 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/mpfr-system
$ ln -s /apps/common/mpc/1.1.0 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/mpc-system
$ ln -s /apps/common/boost/1.68.0 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/boost_1_68_0
$ ln -s /apps/common/CGAL/4.9.1 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/CGAL-4.9.1
$ ln -s /apps/applications/cmake/3.12.3 $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/cmake-system
$ cd ThirdParty-5.0
$ ./Allwmake
$ cd $WM_PROJECT_DIR
$ ./Allwmake
38line : WM_ARCH=linux64
61line : 64)
62line : WM_ARCH=linux64
63line : export WM_COMPILER_LIB_ARCH=64
64line : export WM_CC='icc'
65line : export WM_CXX='icpc'
66line : export WM_CFLAGS='-m64 -fPIC -xMIC-AVX512'
67line : export WM_CXXFLAGS='-m64 -fPIC -xMIC-AVX512 -std=c++0x'
68line : export WM_LDFLAGS='-m64 -fPIC -xMIC-AVX512'
※ "-xMIC-AVX512" 옵션은 KNL CPU 타입 전용 옵션으로, __ SKL 계산노드와 KNL 계산노드 모두 실행을 희망하는 경우는 "-xCOMMON-AVX512" 로 변경
47line : #export FOAM_INST_DIR=$HOME/$WM_PROJECT
50line : export FOAM_INST_DIR=$/OpenFOAM-5.0/KNL/$WM_PROJECT
65line : export WM_COMPILER=Icc
89line : export WM_MPLIB=INTELMPI
※ 위 수정 예제에서 $/OpenFOAM-5.0/KNL 경로는 설치 시 사용된 경로이므로 변경
46line : cgalPACKAGE=${cgal_version:-CGAL-4.8.1}
47line : boostPACKAGE=${boost_version:-boost_1_68_0}
46line : libDir=`mpiicc --showme:link | sed -e 's/.*-L\([^ ]*\).*/\1/'`
9line : CC = icpc -std=c++11 -xMIC-AVX512 -fp-trap=common -fp-model precise
10line : CCP = mpiicc
12line : CFLAGS = $(WM_CFLAGS) -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -restrict -DIDXSIZE64
6line : AR = icc
9line : CCS = icc
10line : CCP = mpiicc
11line : CCD = mpiicc
라. 테스트
$ module purge
$ module load intel/18.0.3 impi/18.0.3
$ source $/OpenFOAM-5.0/KNL/OpenFOAM/OpenFOAM-5.0/etc/bashrc
$ mkdir -p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
$ cd pitzDaily
$ blockMesh
$ simpleFoam
마. 기타
Intel 컴파일러를 이용하여 OpenFOAM 설치 시 KNL CPU 타입 전용 옵션인 "-xMIC-AVX512"를 사용하게 될 경우 KNL 계산노드에서 설치를 진행해야 오류가 발생하지 않습니다. "-xMIC-AVX512" 옵션을 사용할 경우 PBS 스케줄러의 Interactive 기능을 이용하여 KNL 계산노드로 접속하여 빌드를 진행해야 합니다. 아래는 누리온 KNL 계산노드(debug 큐) 로 접속하는 예제입니다.
$ qsub -I -V -q debug -l select=1:ncpus=68:mpiprocs=68:ompthreads=1 -l walltime=12:00:00 -A openfoam
※ qsub 명령 뒤 문자는 I(대문자 아이) 이고, select 와 walltime 앞에 문자는 l(소문자 엘) 입니다.
Last updated