本ページは OCI: HPC Cluster のサブページになります。
本手順の前提
- HPC Clusterで構成された環境でのインストールを想定しています
- OpenFOAMのコンパイルはヘッドノードで実施します
- コンパイルには時間が掛かるので必要に応じてコア数を増やしてください(8core前後を推奨)
環境
- HPC Cluster ver: v2.10.6
- OS Image: HPC_OL8 (OracleLinux-8-OCA-RHCK-OFED-23.10-2.1.3.1-2024.05.08-0)
- kernel: 4.18.0-513.24.1.el8_9.x86_64
- shape: VM.Optimized4.Flex (8core, 16GB Memory)
- インストール先: ログインノードのNFSサーバー
ドキュメント
doc/Build.md·master·Development/openfoam·GitLab
インストール
Requirement
Minimum recommended versions
- gcc : 7.5.0 (minimum, not necessarily recommended)
- cmake: 3.8 (required for ParaView and CGAL build)
- boost: 1.48 (required for CGAL build and some functionality)
- fftw: 3.3.7 (recommended - required for FFT-related functionality)
- paraview: 5.6.3 (for visualization)
Additional utilities
- flex : not 2.6.2, 2.6.3 (fails for building scotch)
- m4 : no known minimum level
- QT : 5.9 (optional - for ParaView build)
追加が必要なパッケージをインストール
sudo yum --enablerepo=ol8_appstream,ol8_developer_EPEL install -y cmake boost boost-devel fftw qt5-qtbase qt5-qtbase-devel
コンパイルの準備
ここからの作業はrootユーザーでの実行になるので、以下でrootなります。
sudo su -
ソースのダウンロード
本環境では /nfs/cluster配下がNFS領域であるためそこにインストールします。
mkdir -p /nfs/cluster/app/OpenFOAM
cd /nfs/cluster/app/OpenFOAM
wget https://dl.openfoam.com/source/v2106/OpenFOAM-v2106.tgz
wget https://dl.openfoam.com/source/v2106/ThirdParty-v2106.tgz
tar xf OpenFOAM-v2106.tgz
tar xf ThirdParty-v2106.tgz
MPI を読み込む
OSイメージのverによっては4.1.5a1の部分が変わりますのでご注意ください。
source /usr/mpi/gcc/openmpi-4.1.7a1/bin/mpivars.sh
OpenMPI の環境変数を読み込む
source OpenFOAM-v2106/etc/bashrc
チェック
foamSystemCheck
-
実行結果
# foamSystemCheck Checking basic system... ------------------------------------------------------------------------------- Shell: bash Host: v2-10-6-controller OS: Linux version 4.18.0-513.24.1.el8_9.x86_64 User: root System check: PASS ================== Can continue to OpenFOAM installation.
コンパイル
foam
export LC_ALL=C
./Allwmake -j -s -q -l
CPUとコア数によりますが、大体8コアで1時間ぐらいを目安かと思います。
-
結果
2024-02-01 07:52:56 +0000 ======================================== Finished compile of visualization with OpenFOAM-v2312 Gcc system compiler linux64GccDPInt32Opt, with SYSTEMOPENMPI sys-openmpi 2024-02-01 07:52:56 +0000 ======================================== OpenFOAM-v2312 Gcc system compiler linux64GccDPInt32Opt, with SYSTEMOPENMPI sys-openmpi api = 2312 patch = 0 bin = 314 entries lib = 151 entries ======================================== Done logging to 'log.linux64GccDPInt32Opt'
コンパイル結果の確認
foamInstallationTest
-
結果
# foamInstallationTest Executing foamInstallationTest Basic setup : ------------------------------------------------------------------------------- OpenFOAM: OpenFOAM-v2106 ThirdParty: ThirdParty-v2106 Shell: bash Host: v2-10-6-controller OS: Linux version 4.18.0-513.24.1.el8_9.x86_64 ------------------------------------------------------------------------------- Main OpenFOAM env variables : ------------------------------------------------------------------------------- Environment FileOrDirectory Valid Crit ------------------------------------------------------------------------------- $WM_PROJECT_USER_DIR /root/OpenFOAM/root-v2106 no no $WM_THIRD_PARTY_DIR ...cluster/app/OpenFOAM/ThirdParty-v2106 yes maybe $WM_PROJECT_SITE [env variable unset] no ------------------------------------------------------------------------------- OpenFOAM env variables in PATH : ------------------------------------------------------------------------------- Environment FileOrDirectory Valid Path Crit ------------------------------------------------------------------------------- $WM_PROJECT_DIR /nfs/cluster/app/OpenFOAM/OpenFOAM-v2106 yes yes yes $FOAM_APPBIN ...06/platforms/linux64GccDPInt32Opt/bin yes yes yes $FOAM_SITE_APPBIN ...06/platforms/linux64GccDPInt32Opt/bin no no $FOAM_USER_APPBIN ...06/platforms/linux64GccDPInt32Opt/bin no no $WM_DIR ...ter/app/OpenFOAM/OpenFOAM-v2106/wmake yes yes often ------------------------------------------------------------------------------- OpenFOAM env variables in LD_LIBRARY_PATH : ------------------------------------------------------------------------------- Environment FileOrDirectory Valid Path Crit ------------------------------------------------------------------------------- $FOAM_LIBBIN ...06/platforms/linux64GccDPInt32Opt/lib yes yes yes $FOAM_SITE_LIBBIN ...06/platforms/linux64GccDPInt32Opt/lib no no $FOAM_USER_LIBBIN ...06/platforms/linux64GccDPInt32Opt/lib no no $FOAM_EXT_LIBBIN ...v2106/platforms/linux64GccDPInt32/lib yes yes maybe $MPI_ARCH_PATH /usr/mpi/gcc/openmpi-4.1.7a1 yes no yes ------------------------------------------------------------------------------- Software Components ------------------------------------------------------------------------------- Software Version Location ------------------------------------------------------------------------------- flex 2.6.1 /usr/bin/flex make 4.2.1 /usr/bin/make wmake 2106 /nfs/cluster/app/OpenFOAM/OpenFOAM-v2106/wmake/wmake gcc 8.5.0 /usr/bin/gcc g++ 8.5.0 /usr/bin/g++ ------------------------------------------------------------------------------- icoFoam exists ...OAM-v2106/platforms/linux64GccDPInt32Opt/bin/icoFoam Summary ------------------------------------------------------------------------------- Base configuration ok. Critical systems ok. Done
動作確認
動作確認として1ノードで計算が流れることを確認します。
ここではジョブスクリプトではなく、srunでインタラクティブに操作をしていきます。
※--constraintや実行するpartitionについては適宜変更してください
srun --nodes=1 -n 36 --constraint=hpc-default --pty /usr/bin/bash -i
source /usr/mpi/gcc/openmpi-4.1.7a1/bin/mpivars.sh
source /nfs/cluster/app/OpenFOAM/OpenFOAM-v2106/etc/bashrc
cp -a /nfs/cluster/app/OpenFOAM/OpenFOAM-v2106/tutorials/incompressible/simpleFoam/motorBike ~
BM.Optimized3.36で動作させる上で以下の必須オプションを設定します。
export UCX_NET_DEVICES=mlx5_2:1
export UCX_IB_TRAFFIC_CLASS=105
export UCX_IB_GID_INDEX=3
export HCOLL_ENABLE_MCAST_ALL=0
export OMPI_MCA_pml=ucx
export OMPI_MCA_coll_hcoll_enable=0
export OMPI_MCA_hwloc_base_report_bindings=1
VM.Standard.E5.FlexなどのVMで実行する場合は以下の環境変数を設定してください。
export OMPI_MCA_coll_hcoll_enable=0
export OMPI_MCA_btl="self,tcp"
export OMPI_MCA_btl_tcp_if_include="x.x.x.0/22"
export OMPI_MCA_pml="^ucx"
OpenFOAMを実行します。
./Allrun
出力された各種ログファイルを確認して正常に計算が行われたことを確認してください。
以上