Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

OpenFOAM課題の入口

OpenFOAMとは

OpenFOAMは、CFD、つまり数値流体力学のためのオープンソースソフトウェア群です。2026年大会のHPC側では、メモ上、OpenFOAM HPC Committee repositoryのケースが使われる可能性があります。

現時点では、どのケースが大会本番で使われるかは未確定です。

OpenFOAM HPC Committee repository

OpenFOAM HPC Benchmark SuiteのREADMEでは、このリポジトリの目的が次のように説明されています。

  • HPCアーキテクチャ上でデータセットをセットアップして実行するためのガイドや初期スクリプトを提供する。
  • ハードウェア、ソフトウェア環境、設定を比較するための共通基準を提供する。
  • 性能を測るためのKPIを定義する。

README上では、Grand Challenges、Industrial Applications、Microbenchmarks、Other Benchmarksに分かれ、DrivAer、cavity、motorbike、combustion、wind farmなど複数のケースが整理されています。

OpenFOAMの並列実行の基本

OpenFOAM v13 User Guide: Running applications in parallelでは、OpenFOAMの並列実行はdomain decomposition、つまり計算領域を複数の部分に分割して各プロセスに割り当てる方式だと説明されています。

基本の流れは次の通りです。

  1. decomposeParDictで分割数と分割方法を決める。
  2. decomposeParでメッシュと初期場を分割する。
  3. mpirunなどでソルバを-parallel付きで実行する。
  4. 必要ならreconstructParで結果を再構成する。

よく出る分割方法は次の通りです。

方法意味
simplex/y/z方向に単純分割する
hierarchical分割順序を指定できる幾何分割
scotchプロセッサ境界を減らすことを狙うグラフ分割
ptscotch並列実行向けのSCOTCH系分割

性能に効きそうな場所

初心者が最初に見るべき観点です。

観点見るものなぜ重要か
領域分割decomposeParDict、各rankのセル数、境界面MPI通信量とロードバランスに直結する
線形ソルバfvSolution、反復回数、残差OpenFOAM実行時間の大部分を占めやすい
I/OwriteInterval、fileHandler、ログ出力並列ファイル数が多いとファイルシステムが詰まる
コンパイルMPI、最適化フラグ、OpenFOAM版CPU命令、通信ライブラリ、数学ライブラリで差が出る
ノード配置rank mapping、core binding、NUMACPUメモリ帯域とネットワーク利用に影響する

最初の実験テンプレート

本番ケースが出たら、まず次を固定してベースラインを作ります。

項目記録内容
Git commit / OpenFOAM version再現性のため
ケース名、メッシュサイズ問題規模の確認
ノード数、rank数、threads並列条件
decomposeParDict分割条件
実行コマンドPBS/Slurmスクリプト含む
wall time大会指標の中心
反復回数、残差速いが解が悪い変更を見抜く
I/O時間、ログサイズボトルネック確認

参考文献