インストール (2) OneAPI リビルド¶
概要¶
PHITSをIntel OneAPI環境下で再ビルドし、MPIやOpenMPに対応した実行ファイルを構築する.
PHITSのインストールでは、 (1) ライブラリや反応断面積データベースのディプロイ、(2) コンパイル、 (3) パス設定などを実施しているはず.
既存インストールのPHITSで、srcディレクトリ内のMakefileを編集し、再コンパイルすれば、 OneAPIコンパイラ(ifx)を用いたPHITSへ変更可能 .
手順概要¶
OneAPIをインストール(Fortranのページ参照).
phits/src/にて、 makefile を編集.
makeを実行.
作成された実行ファイルをphits/bin/へコピーして、phits.shの対象実行ファイルを書き換える.
上記、2-4は、OMP, MPI, 両方なしの3種類で作成する.
Makefileの編集¶
phits/src/makefile 内のビルド構成を変更する.
既存の LinIfort セクション ( ifeqでマッチしている箇所 )を複製し、LinuxOneAPI の新たなセクションを作成する.
FC=mpiifort
をFC=mpiifx
に,またはFC=ifort
をFC=ifx
に変更する.LinIfortで検索して、引っかかる部分は、LinuxOneAPIにもマッチするように、適宜複製.(面倒であれば、LinIfortのFCを置き換えても良い.)
必要に応じて
FFLAGS
も適宜調整する(例:-O3 -xHost -heap-arrays など).
USEOMP, USEMPI の組み合わせ¶
以下の3パターンをそれぞれ make 時に定義してビルドする:
USEOMP=0 USEMPI=0:シングルスレッド版(逐次実行用)
USEOMP=1 USEMPI=0:OpenMP並列化版
USEOMP=0 USEMPI=1:MPI並列化版
ビルド例:
make -j 8 ENVFLAGS=LinuxOneAPI USEOMP=0 USEMPI=0
make -j 8 ENVFLAGS=LinuxOneAPI USEOMP=1 USEMPI=0
make -j 8 ENVFLAGS=LinuxOneAPI USEOMP=0 USEMPI=1
実行ファイルの配置¶
ビルドされた実行ファイルは、phits/ ディレクトリ下に次のようなファイル名で出力される:
phits_LinuxOneAPI (シングルスレッド版)
phits_LinuxOneAPI_OMP (OpenMP版)
phits_LinuxOneAPI_MPI (MPI版)
これらを phits/bin ディレクトリにコピーする.
phits.sh の修正¶
PHITS起動スクリプト phits/bin/phits.sh を編集し、実行対象を以下のように変更する:
PHITS_SINGLE_EXE=phits_LinuxOneAPI
PHITS_OMP_EXE=phits_LinuxOneAPI_OMP
PHITS_MPI_EXE=phits_LinuxOneAPI_MPI
これにより、phits.sh 実行時に OneAPI + MPI 版 PHITS を使用するようになる.
補足¶
OneAPI の環境を有効にするには、以下の実行が必要:
source /opt/intel/oneapi/setvars.sh
makefileがわかってない場合は、コンパイラの位置として、絶対パスを指定するなどする.