CMake によるビルド手順¶
このページでは,FrontISTR のソースコード取得からビルド・インストールまでの手順を説明する.依存ライブラリの詳細は 必須・オプション依存ライブラリ を参照されたい.
ソースコードの取得¶
FrontISTR のソースコードは GitLab または GitHub から取得できる.
# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git
# GitHub(ミラー)
git clone https://github.com/FrontISTR/FrontISTR.git
ビルド手順¶
FrontISTR はアウトオブソースビルドを前提としている(ソースツリー直下でのビルドは禁止されている).build ディレクトリを作成し,その中で cmake を実行する.
cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)
ビルド後は /path/to/FrontISTR/build/fistr1/fistr1 として直接実行できる.システムのパス(CMAKE_INSTALL_PREFIX)へインストールする場合は追加で以下を実行する.
CMake オプション一覧¶
「検出時 ON」と記載されているオプションは,cmake 実行時にシステム上でそのライブラリが見つかった場合に自動的に有効になる.明示的に -DWITH_XXX=OFF を指定することで無効化できる.
| オプション | デフォルト | 説明 |
|---|---|---|
WITH_MPI |
ON |
MPI 並列を有効にする |
WITH_OPENMP |
検出時 ON | OpenMP スレッド並列を有効にする |
WITH_METIS |
検出時 ON | METIS による領域分割を有効にする |
METIS_VER_4 |
OFF |
METIS v4 を使用する(OFF で v5) |
WITH_MUMPS |
検出時 ON | MUMPS 並列直接法ソルバーを有効にする |
WITH_MKL |
検出時 ON | Intel MKL(PARDISO 含む)を有効にする |
WITH_LAPACK |
検出時 ON | LAPACK による条件数推定を有効にする |
WITH_ML |
検出時 ON | Trilinos ML による AMG 前処理を有効にする |
WITH_REFINER |
検出時 ON | REVOCAP_Refiner によるメッシュ細分化を有効にする |
WITH_REVOCAP |
検出時 ON | REVOCAP_Coupler による連成解析を有効にする |
WITH_TOOLS |
ON |
付属ツール群をビルドする |
WITH_DOC |
OFF |
Doxygen による API ドキュメントを生成する |
WITH_NETCDF |
検出時 ON | Exodus II 形式の出力(NetCDF)を有効にする |
WINDOWS |
OFF |
Windows 向けビルドを有効にする |
CMAKE_BUILD_TYPE |
RELEASE |
ビルドタイプ(RELEASE / DEBUG) |
CMAKE_INSTALL_PREFIX |
/usr/local |
インストール先ディレクトリ |
DEBUG_EXTRA |
OFF |
メモリリークチェックを有効にする(GCC 向け,-fsanitize=address) |
DEBUG ビルド¶
CMAKE_BUILD_TYPE=DEBUG を指定すると,コンパイラ別に以下のデバッグフラグが追加される.
| コンパイラ | 追加フラグ |
|---|---|
| GCC | -fbounds-check -fbacktrace |
| Intel | -check uninit,bound -traceback |
GPU を用いたビルド¶
NVIDIA HPC SDK(nvc/nvc++/nvfortran)をコンパイラとして指定した場合,CMake は自動的に以下のフラグを追加する.
| フラグ | 説明 |
|---|---|
-acc |
OpenACC を有効にする |
-Minfo=accel |
GPU オフロードの情報をコンパイル時に表示する |
-gpu=ccnative,mem:managed |
ビルド環境の GPU を自動検出してターゲットを決定し,Unified Memory を使用する |
OpenACC による GPU ビルドの詳細手順は GPU を用いたビルド を参照.