SlideShare a Scribd company logo
1 of 23
Download to read offline
2020年12月4日
OpenCAE・FrontISTR合同シンポジウム2020
「OpenFOAMソルバの実行時ベイズ最適化」
今野 雅 / IMANO Masashi
(東京大学情報基盤センター・株式会社OCAEL)
1 はじめに
• OpenFOAMの流体解析ソルバの計算時間は,主に線型ソルバが占める.
• 線型ソルバの計算時間は,線型ソルバの種類と前処理によって大きく変化する.
• 昨年のオープンCAEシンポジウム[1]では,ベイズ最適化アルゴリズムによるハイパーパ
ラメータ自動最適化フレームワークであるOptuna[2]を用い,ノードあたりのMPIプロセ
ス数と線形ソルバ設定をパラメータとして,非圧縮性の単相流および二相流の解析時間の
最適化を行なった.
• 結果として,少ない試行数で大変効率良く,線形ソルバ設定の最適化が行えた.
0 20 40 60 80 100
Trial No.
0
2
4
6
CPUTime[s]
Trial
Best
✓メッシュ生成に時間を要しない
✓構造格子のため,格子数変更が容易
✓圧力と速度のみ解くので,「圧力線形ソ
ルバの解析時間が支配的」という非圧縮性
東京大学Oakbridge-CX 8ノードでの24M格子チャネル流の計算時間最適化[1]
56回の試行で初期設定(56PPN,DIC-PCG)から約2.8倍高速化(48PPN,DIC-GAMG)
1
2 予備計算の多数試行による最適化と実行時最適化
• 既報[1]の線形ソルバ設定の最適化では,初期の少ないステップ数の予備計算を繰り返し
試行する.
• 予備計算の多数試行による最適化
– 利点
∗ 同じ解析区間での計算時間が計測・比較できる.
– 欠点
∗ 解析が比較的短時間で終わる場合,最適化の試行に必要な時間の割合が大きい.
∗ 最適な線型ソルバ設定が,時間ステップの進行に応じて変化する可能性がある.
• 本計算の実行時最適化
– 利点
∗ 予備計算の必要が無く,全ての最適化試行が無駄にならない.
∗ 時間ステップの進行に応じた最適化が行える可能性がある.
– 欠点
∗ 線型ソルバが収束しないAggressiveな設定を試すには,リスタートが必要(要改造)
• 以上の背景から,本研究では,OpenFOAMソルバにおける線型ソルバの実行時最適化の
検討を行なった.
2
3 ベイズ最適化とOptuna
• ベイズ最適化
– 計算コストのようなブラックボックス関数を効率的に最適化可能
– 観測された目的関数の値を用い,Gaussian Process(GP)により平均値と分散を推定
– 獲得関数(acquisition function)を算出し,最大の値を次の試行の候補とする
目的関数
獲得関数
Bayesian Optimization in AlohaGo[Chen 2018]
• Optuna[3, 2]
– Preferred Networks社が開発するベイズ最適化用Pythonライブラリ
– Hyperopt[4]同様,計算量オーダが低いTree-structured Parzen Estimator(TPE)を実装
– 動的なパラメータ空間を扱えるDefined-by-RunのAPIを最初に実装
∗ AMGの有無によりパラメータが変化するOpenFOAMの線型ソルバの最適化に有用
3
4 計算条件
計算機 東京大学情報基盤センターOakbridge-CX [5]
(CPU: CascadeLake,ノードあたり56コア)
ソフトウェア OpenFOAM v2006 (PPCGやPPCRが実装済)
ベイズ最適化フレームワーク Optuna 2.3.0(最新版)
OpenFOAMの設定制御ライブラリ PyFoam 0.6.11
実行時の線型ソルバの設定更新 PyFoamでfvSolutoionを更新(*)
最小化する目的関数 1ステップの計算時間
• (*) 最 初 にPyFoamを 用 い て 以 下 の 設 定 を 行 い,fvSolutionの フ ァ イ ル の 更 新 に 応 じ て,
OpenFOAMのソルバが線型ソルバの設定を迅速に変更するようにしている.
system/controlDict
runTimeModifiable yes;
OptimisationSwitches {
fileModificationSkew 1;
maxFileModificationPolls 100;
}
4
5 線形ソルバ設定の実行時最適化手法の詳細
1. OpenFOAMソルバのログを解析して,最初の数ステップから,線型ソルバが解いている
場を特定する.
pimpleFoamソルバのログでの例
Time = 0.002
PIMPLE: iteration 1
DILUPBiCG: Solving for Ux, ..., No Iterations x
略
DICPCG: Solving for p, ..., No Iterations x
略
DICPCG: Solving for p, ..., No Iterations x
• DILUPBiCG ⇒ 非対称行列用ソルバ ⇒ Ux ⇒ 速度場Uが対象
• DICPCG ⇒ 対称行列用ソルバ ⇒ 圧力場pが対象
• PIMPLE ⇒ p,および,時間ループ内最終反復時のpFinal, UFinalが対象
5
2. 線型ソルバ設定のパラメータ群を生成(確認・手動設定用にJSON形式で保存).
{"system/fvSolution": {
"solvers/UFinal/solver": [ UFinalの線型ソルバ設定
{"PBiCG":{"solvers/UFinal/preconditioner": ["DILU"]}},
{"PBiCGStab":{"solvers/UFinal/preconditioner": ["DILU"]}},
{"smoothSolver":{"solvers/UFinal/smoother":["GaussSeidel","symGaussSeidel"]}}],
"solversp/p/solver": [{"PCG": { pの線型ソルバ設定
"solvers/p/preconditioner": ["DIC","FDIC",{"": {
"solvers/p/preconditioner/preconditioner":["GAMG"],
"solvers/p/preconditioner/smoother":["DIC","DICGaussSeidel","FDIC","GaussSeidel","symGaussSeidel"],
"solvers/p/preconditioner/agglomerator":["faceAreaPair","algebraicPair"],
"solvers/p/preconditioner/cacheAgglomeration":["true","false"],
"solvers/p/preconditioner/scaleCorrection":["true","false"],
"solvers/p/preconditioner/nCellsInCoarsestLevel": [5,10,20,40,80,160,320]}}]}},
pFinalについてもpと同様に生成
6
3. ベイズ最適化フレームワークのoptunaが,パラメータ群の中から線型ソルバ設定を提案.
4. OpenFOAMの設定制御ライブラリPyFoamを用いて,fvSolutoionを更新.
5. ソルバのログにおいて,線型ソルバ設定ファイルの再読み込みを確認後,1ステップの計
算時間を算出.
Re-reading object fvSolution from file "system/fvSolution" 線型ソルバ設定ファイルの再読み込み
Time = 0.016
更新後の線型ソルバによる解析
ExecutionTime = 3.15 s ClockTime = 5 s
Time = 0.018
更新後の線型ソルバによる解析
ExecutionTime = 3.25 s ClockTime = 5 s #1ステップの計算時間t=3.25-3.15=0.10
6. 1ステップの計算時間をoptunaに報告して3.に戻り,ベイズ最適化を進める.
Trial 0 finished with value: 0.1 and parameters: {'solvers/p/solver':0,'solvers/p/preconditioner':0,
'solvers/pFinal/solver':0, 'solvers/pFinal/preconditioner':0,
'solvers/UFinal/solver':0, 'solvers/UFinal/preconditioner':0}. Best is trial 0 with value: 0.1.
7
6 検討ケース
ケース名 ベイズ最適化を行う線型ソルバの場
場の内容 チャネル流 ダムブレイク流
Case-0 なし なし なし
Case-1 時間ループ最終反復時圧力 pFinal p_rghFinal
Case-2 全ての圧力 p, pFinal p_rgh, p_rghFinal
Case-3 全ての圧力と速度 p, pFinal, UFinal なし(*)
• (*) momentumPredictor no;
8
7 チャネル流の解析条件
レイノルズ数Reτ 110
主流方向 一定の圧力勾配
主流・スパン方向 周期境界
ソルバ pimpleFoam
乱流モデル 無し(laminar)
領域分割手法 scotch(周期境界面は同領域)
速度線型ソルバ初期値 DILU-PBiCG
圧力線型ソルバ初期値 DIC-PCG
圧力線形ソルバの収束条件 残差10−6
以下
格子数 約3M(240 × 130 × 96)
ノード数 8ノード
並列数 432 (54/ノード)
✓メッシュ生成に時間を要しない
✓構造格子のため,格子数変更が容易
✓圧力と速度のみ解くので,「圧力線形ソ
ルバの解析時間が支配的」という非圧縮性
流体解析の特性を素直に示す
9
8 チャネル流の計算時間(解析開始後2.5秒後まで)
0
20
40
60
80
100
120
140
160
180
0 0.5 1 1.5 2 2.5
Executiontime[s]
Time [s]
Case-0
Case-1
Case-2
Case-3
← Case-0(最適化無)
← Case-1∼3(最適化有)
• 実行時に線型ソルバ設定のベイズ最適化を行うCase-1∼3では,解析初期にCase-0よりも
遅い線型ソルバ設定の試行が多く行われるため,最適化無しのCase-0よりも遅い.
• 約0.6秒後からはCase-0よりも速い線型ソルバ設定が多く試行されるようになる.
• 約1.4秒後以降はCase-0よりも速くなる
10
9 チャネル流の計算時間(解析開始後20秒後まで)
0
200
400
600
800
1000
1200
1400
1600
1800
0 2 4 6 8 10 12 14 16 18 20
Executiontime[s]
Time [s]
Case-0
Case-1
Case-2
Case-3
← Case-0(最適化無)
← Case-3(43%高速)
• 20秒後の計算時間は,U, p, pFinalの全ての場について線型ソルバの設定を最適化する
Case-3が最速となり,最適化無しのCase-0より43%高速化された.
11
10 チャネル流でのCase-3の線型ソルバ最適設定
初期値
p {
tolerance 1e-06;relTol 0.05;
solver PCG;
preconditioner DIC;}
pFinal {
tolerance 1e-06;relTol 0;
solver PCG;
preconditioner DIC;}
UFinal {
tolerance 1e-05;relTol 0;
solver PBiCG;
preconditioner DILU;}
⇒
最適設定
p {
tolerance 1e-06;relTol 0.05;
solver PPCR;
preconditioner DIC;}
pFinal {
tolerance 1e-06;relTol 0;
solver PPCR;
preconditioner FDIC;}
UFinal {
tolerance 1e-05;relTol 0;
solver PBiCG;
preconditioner DILU;}
• 圧力pとpFinalの線型ソルバが,PCGからPPCRに変更.
• 最終反復時の圧力pFinalの前処理が,DICからFDICに変更.
• 速度は変更無し.
12
11 ダムブレイク流の解析条件
ソルバ interFoam
乱流モデル 無し(laminar)
領域分割手法 scotch
圧力線型ソルバ初期値 DIC-GAMG
圧力線形ソルバの収束条件 残差10−8
以下
格子数 約2M(128 × 128 × 128)
ノード数 4ノード
並列数 216 (54/ノード)
13
12 ダムブレイク流の計算時間(解析開始後0.5秒後まで)
0
20
40
60
80
100
120
140
160
0 0.1 0.2 0.3 0.4 0.5
Executiontime[s]
Time [s]
Case-0
Case-1
Case-2
← Case-0(最適化無)
← Case-1∼2(最適化)
• チャネル流と同様に,解析初期では,最適化無しのCase-0よりも,最適化を行う
Case-1∼2のほうが遅い.
14
13 ダムブレイク流の計算時間(解析開始後2.5秒後まで)
0
100
200
300
400
500
600
700
800
900
1000
0 0.5 1 1.5 2 2.5
Executiontime[s]
Time [s]
Case-0
Case-1
Case-2
← Case-0(最適化無)
← Case-2(22%高速)
• 約0.9秒後以降は,最適化を行うCase-1∼2は,最適化無しのCase-0よりも速くなって
いる.
• 2.5秒後の計算時間は,p, pFinalの設定を最適化するCase-2が最速となり,Case-0より
22%高速化された.
15
14 ダムブレイク流でのCase-2の線型ソルバ最適設定
初期値
p_rgh {
tolerance 1e-08;relTol 0.01;
solver GAMG;
smoother DIC;
cacheAgglomeration false;}
p_rghFinal {
tolerance 1e-08;relTol 0;
solver GAMG;
smoother DIC;
cacheAgglomeration false;}
⇒
最適設定
p_rgh {
tolerance 1e-08;relTol 0.01;
solver PPCR;
preconditioner FDIC;
p_rghFinal {
tolerance 1e-08;relTol 0;
solver PCG;
preconditioner {preconditioner GAMG;
smoother DIC;
agglomerator algebraicPair;
cacheAgglomeration false;
scaleCorrection true;
nCellsInCoarsestLevel 10;}}
16
15 チュートリアルの実行時ベイズ最適化例(非多相流)
カテゴリ ソルバ ケース名 並列数 高速化率[%]
combustion fireFoam oppositeBurningPanels 6 -2.6
smallPoolFire3D 4 -6.0
reactingFoam chokedNozzle 3 16.4
compressible rhoPimpleAdiabaticFoam rutlandVortex2D 3 0.5
lagrangian MPPICFoam cyclone 12 7.8
incompressible pimpleFoam channel395 4 8.6
cylinder2D 8 0.3
decayIsoTurb 8 16.9
mixerVesselAMI2D-topologyChange 4 59.6
simpleFoam motorBike 6 2.5
• 並列計算かつ,計算時間が中程度(約5分間〜約24時間)のケースを対象にした.
• 線型ソルバの実行時最適化により,チュートリアルの設定より遅くなる場合もあるが,概
ね高速化される.
17
16 チュートリアルの実行時ベイズ最適化例(多相流)
カテゴリ ソルバ ケース名 並列数 高速化率[%]
multiphase MPPICInterFoam twoPhasePachuka 4 0.2
cavitatingFoam throttle3D 4 21.4
compressibleInterIsoFoam depthCharge3D 4 10.4
interFoam waveMakerMultiPaddleFlap 2 1.4
waveMakerMultiPaddlePiston 2 50.0
interIsoFoam waveExampleStreamFunction 2 -5.0
damBreakWithObstacle 4 2.9
iobasin 8 -12.0
multiphaseEulerFoam damBreak4phaseFine 4 0.5
• 非多相流と同様に,実行時最適化により遅くなる場合もあるが,概ね高速化される.
• 実行時最適化により遅くなる原因の調査や,その対策は今後の課題である.
18
17 まとめ
• ハイパーパラメータ自動最適化ツールOptunaを用いて,チャネル流やダムブレイク流と,
並列計算を行うチュートリアルケースを対象に,線型ソルバ設定の実行時ベイズ最適化の
検討を行なった.
• チャネル流やダムブレイク流については,計算初期において概ね設定が最適化され,それ
以降は最適化を行わないケースよりも高速に解析が行えることがわかった.
• 並列計算を行うチュートリアルケースについても,最適化を行わないケースよりも高速化
される場合が多い事がわかった.
19
18 今後の課題
0
200
400
600
800
1000
1200
1400
1600
1800
0 2 4 6 8 10 12 14 16 18 20
Terminate optimization at trial #50
Use best parameters
Executiontime[s]
Time [s]
Case-0
Case-1
Case-2
Case-3
Case-4
← Case-0(最適化無)
← Case-3(43%高速)
← Case-4(77%高速)
• 本検討では終始最適化を行なっているため,最後まで遅い設定の試行が避けられない.
• チャネル流では47回目の試行で最適設定が得られているので,例えば50回の試行で最適
化を止め,それ以降は最適設定を使用したCase-4では,Case-0より77%高速化された.
• 今後は,線型ソルバ設定ベイズ最適化の途中停止や再開始の手法について検討したい.
20
19 (付録)ダムブレイク流での圧力線型ソルバの反復回数
0
10
20
30
40
50
60
70
80
90
0 0.5 1 1.5 2 2.5
Numberofiterations
Time [s]
First
Second
Final
Case-0
 
• 約0.7秒から増加
• 約1秒に最大
• 約1.4秒後から元の
レベル
 
21
参考文献
[1] 今野雅. パラメータ自動最適化フレームワークOptunaを用いた数値流体解析の計算コス
ト最適化. オープンCAEシンポジウム2019. オープンCAE学会, Dec 2019.
http://www.opencae.or.jp/activity/symposium/opencae_symposium2019/, (accessed
2020-11-19).
[2] Optuna. https://optuna.org/, (accessed 2020-11-19).
[3] Takuya Akiba, Shotaro Sano, Toshihiko Yanase, Takeru Ohta, and Masanori Koyama.
Optuna: A next-generation hyperparameter optimization framework. CoRR, Vol.
abs/1907.10902, , 2019.
[4] James Bergstra, Brent Komer, Chris Eliasmith, Dan Yamins, and David D Cox.
Hyperopt: a python library for model selection and hyperparameter optimization.
Computational Science  Discovery, Vol. 8, No. 1, p. 014008, jul 2015.
[5] 東京大学情報基盤センター スーパーコンピューティング部門.
https://www.cc.u-tokyo.ac.jp/, (accessed 2020-11-19).
22

More Related Content

What's hot

OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方takuyayamamoto1800
 
OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門takuyayamamoto1800
 
OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法takuyayamamoto1800
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてFumiya Nozaki
 
OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析takuyayamamoto1800
 
Turbulence Models in OpenFOAM
Turbulence Models in OpenFOAMTurbulence Models in OpenFOAM
Turbulence Models in OpenFOAMFumiya Nozaki
 
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』Fumiya Nozaki
 
OpenFOAMの壁関数
OpenFOAMの壁関数OpenFOAMの壁関数
OpenFOAMの壁関数Fumiya Nozaki
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-Fumiya Nozaki
 
About chtMultiRegionFoam
About chtMultiRegionFoam About chtMultiRegionFoam
About chtMultiRegionFoam 守淑 田村
 
OpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズOpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズmmer547
 
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』Fumiya Nozaki
 
Mixer vessel by cfmesh
Mixer vessel by cfmeshMixer vessel by cfmesh
Mixer vessel by cfmeshEtsuji Nomura
 
About dexcs2021 for OpenFOAM
About dexcs2021 for OpenFOAMAbout dexcs2021 for OpenFOAM
About dexcs2021 for OpenFOAMEtsuji Nomura
 
OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1Fumiya Nozaki
 
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたFumiya Nozaki
 
桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜
桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜
桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜Daisuke Matsubara
 
An investigation about interFoam performance
An investigation about interFoam performanceAn investigation about interFoam performance
An investigation about interFoam performance守淑 田村
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
 

What's hot (20)

OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
 
OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門
 
OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
 
OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析
 
Turbulence Models in OpenFOAM
Turbulence Models in OpenFOAMTurbulence Models in OpenFOAM
Turbulence Models in OpenFOAM
 
rhoCentralFoam in OpenFOAM
rhoCentralFoam in OpenFOAMrhoCentralFoam in OpenFOAM
rhoCentralFoam in OpenFOAM
 
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
 
OpenFOAMの壁関数
OpenFOAMの壁関数OpenFOAMの壁関数
OpenFOAMの壁関数
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
 
About chtMultiRegionFoam
About chtMultiRegionFoam About chtMultiRegionFoam
About chtMultiRegionFoam
 
OpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズOpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズ
 
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
 
Mixer vessel by cfmesh
Mixer vessel by cfmeshMixer vessel by cfmesh
Mixer vessel by cfmesh
 
About dexcs2021 for OpenFOAM
About dexcs2021 for OpenFOAMAbout dexcs2021 for OpenFOAM
About dexcs2021 for OpenFOAM
 
OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1
 
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
 
桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜
桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜
桜の花の落ちるスピードは秒速5センチメートルか? 〜OpenFOAM編〜
 
An investigation about interFoam performance
An investigation about interFoam performanceAn investigation about interFoam performance
An investigation about interFoam performance
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
 

More from Masashi Imano

名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト
名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト
名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテストMasashi Imano
 
OpenFOAM-2.3.0の 全チュートアリアル・ベンチマーク
OpenFOAM-2.3.0の 全チュートアリアル・ベンチマークOpenFOAM-2.3.0の 全チュートアリアル・ベンチマーク
OpenFOAM-2.3.0の 全チュートアリアル・ベンチマークMasashi Imano
 
流体解析入門者向け超初級講習会@関東 修正版
流体解析入門者向け超初級講習会@関東 修正版流体解析入門者向け超初級講習会@関東 修正版
流体解析入門者向け超初級講習会@関東 修正版Masashi Imano
 
Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...
Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...
Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...Masashi Imano
 
Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...
Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...
Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...Masashi Imano
 
SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...
SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...
SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...Masashi Imano
 
SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...
SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...
SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...Masashi Imano
 
SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...
SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...
SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...Masashi Imano
 
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日Masashi Imano
 

More from Masashi Imano (9)

名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト
名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト
名古屋大学スーパーコンピュータ不老のOpenFOAMベンチマークテスト
 
OpenFOAM-2.3.0の 全チュートアリアル・ベンチマーク
OpenFOAM-2.3.0の 全チュートアリアル・ベンチマークOpenFOAM-2.3.0の 全チュートアリアル・ベンチマーク
OpenFOAM-2.3.0の 全チュートアリアル・ベンチマーク
 
流体解析入門者向け超初級講習会@関東 修正版
流体解析入門者向け超初級講習会@関東 修正版流体解析入門者向け超初級講習会@関東 修正版
流体解析入門者向け超初級講習会@関東 修正版
 
Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...
Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...
Optimization of parameter settings for GAMG solver in simple solver, OpenFOAM...
 
Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...
Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...
Optimization of relaxation factor for simple solver, OpenFOAM Study Meeting f...
 
SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...
SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...
SGI OpenFOAM Cloud Benchmark Part 3, OpenFOAM Study Meeting for beginner@Kans...
 
SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...
SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...
SGI OpenFOAM Cloud Benchmark Part 2, OpenFOAM Study Meeting for beginner@Kant...
 
SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...
SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...
SGI OpenFOAM Cloud Benchmark, OpenFOAM Study Meeting for beginner@Kansai, 7th...
 
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 

Recently uploaded (10)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 

OpenFOAMソルバの実行時ベイズ最適化

  • 2. 1 はじめに • OpenFOAMの流体解析ソルバの計算時間は,主に線型ソルバが占める. • 線型ソルバの計算時間は,線型ソルバの種類と前処理によって大きく変化する. • 昨年のオープンCAEシンポジウム[1]では,ベイズ最適化アルゴリズムによるハイパーパ ラメータ自動最適化フレームワークであるOptuna[2]を用い,ノードあたりのMPIプロセ ス数と線形ソルバ設定をパラメータとして,非圧縮性の単相流および二相流の解析時間の 最適化を行なった. • 結果として,少ない試行数で大変効率良く,線形ソルバ設定の最適化が行えた. 0 20 40 60 80 100 Trial No. 0 2 4 6 CPUTime[s] Trial Best ✓メッシュ生成に時間を要しない ✓構造格子のため,格子数変更が容易 ✓圧力と速度のみ解くので,「圧力線形ソ ルバの解析時間が支配的」という非圧縮性 東京大学Oakbridge-CX 8ノードでの24M格子チャネル流の計算時間最適化[1] 56回の試行で初期設定(56PPN,DIC-PCG)から約2.8倍高速化(48PPN,DIC-GAMG) 1
  • 3. 2 予備計算の多数試行による最適化と実行時最適化 • 既報[1]の線形ソルバ設定の最適化では,初期の少ないステップ数の予備計算を繰り返し 試行する. • 予備計算の多数試行による最適化 – 利点 ∗ 同じ解析区間での計算時間が計測・比較できる. – 欠点 ∗ 解析が比較的短時間で終わる場合,最適化の試行に必要な時間の割合が大きい. ∗ 最適な線型ソルバ設定が,時間ステップの進行に応じて変化する可能性がある. • 本計算の実行時最適化 – 利点 ∗ 予備計算の必要が無く,全ての最適化試行が無駄にならない. ∗ 時間ステップの進行に応じた最適化が行える可能性がある. – 欠点 ∗ 線型ソルバが収束しないAggressiveな設定を試すには,リスタートが必要(要改造) • 以上の背景から,本研究では,OpenFOAMソルバにおける線型ソルバの実行時最適化の 検討を行なった. 2
  • 4. 3 ベイズ最適化とOptuna • ベイズ最適化 – 計算コストのようなブラックボックス関数を効率的に最適化可能 – 観測された目的関数の値を用い,Gaussian Process(GP)により平均値と分散を推定 – 獲得関数(acquisition function)を算出し,最大の値を次の試行の候補とする 目的関数 獲得関数 Bayesian Optimization in AlohaGo[Chen 2018] • Optuna[3, 2] – Preferred Networks社が開発するベイズ最適化用Pythonライブラリ – Hyperopt[4]同様,計算量オーダが低いTree-structured Parzen Estimator(TPE)を実装 – 動的なパラメータ空間を扱えるDefined-by-RunのAPIを最初に実装 ∗ AMGの有無によりパラメータが変化するOpenFOAMの線型ソルバの最適化に有用 3
  • 5. 4 計算条件 計算機 東京大学情報基盤センターOakbridge-CX [5] (CPU: CascadeLake,ノードあたり56コア) ソフトウェア OpenFOAM v2006 (PPCGやPPCRが実装済) ベイズ最適化フレームワーク Optuna 2.3.0(最新版) OpenFOAMの設定制御ライブラリ PyFoam 0.6.11 実行時の線型ソルバの設定更新 PyFoamでfvSolutoionを更新(*) 最小化する目的関数 1ステップの計算時間 • (*) 最 初 にPyFoamを 用 い て 以 下 の 設 定 を 行 い,fvSolutionの フ ァ イ ル の 更 新 に 応 じ て, OpenFOAMのソルバが線型ソルバの設定を迅速に変更するようにしている. system/controlDict runTimeModifiable yes; OptimisationSwitches { fileModificationSkew 1; maxFileModificationPolls 100; } 4
  • 6. 5 線形ソルバ設定の実行時最適化手法の詳細 1. OpenFOAMソルバのログを解析して,最初の数ステップから,線型ソルバが解いている 場を特定する. pimpleFoamソルバのログでの例 Time = 0.002 PIMPLE: iteration 1 DILUPBiCG: Solving for Ux, ..., No Iterations x 略 DICPCG: Solving for p, ..., No Iterations x 略 DICPCG: Solving for p, ..., No Iterations x • DILUPBiCG ⇒ 非対称行列用ソルバ ⇒ Ux ⇒ 速度場Uが対象 • DICPCG ⇒ 対称行列用ソルバ ⇒ 圧力場pが対象 • PIMPLE ⇒ p,および,時間ループ内最終反復時のpFinal, UFinalが対象 5
  • 7. 2. 線型ソルバ設定のパラメータ群を生成(確認・手動設定用にJSON形式で保存). {"system/fvSolution": { "solvers/UFinal/solver": [ UFinalの線型ソルバ設定 {"PBiCG":{"solvers/UFinal/preconditioner": ["DILU"]}}, {"PBiCGStab":{"solvers/UFinal/preconditioner": ["DILU"]}}, {"smoothSolver":{"solvers/UFinal/smoother":["GaussSeidel","symGaussSeidel"]}}], "solversp/p/solver": [{"PCG": { pの線型ソルバ設定 "solvers/p/preconditioner": ["DIC","FDIC",{"": { "solvers/p/preconditioner/preconditioner":["GAMG"], "solvers/p/preconditioner/smoother":["DIC","DICGaussSeidel","FDIC","GaussSeidel","symGaussSeidel"], "solvers/p/preconditioner/agglomerator":["faceAreaPair","algebraicPair"], "solvers/p/preconditioner/cacheAgglomeration":["true","false"], "solvers/p/preconditioner/scaleCorrection":["true","false"], "solvers/p/preconditioner/nCellsInCoarsestLevel": [5,10,20,40,80,160,320]}}]}}, pFinalについてもpと同様に生成 6
  • 8. 3. ベイズ最適化フレームワークのoptunaが,パラメータ群の中から線型ソルバ設定を提案. 4. OpenFOAMの設定制御ライブラリPyFoamを用いて,fvSolutoionを更新. 5. ソルバのログにおいて,線型ソルバ設定ファイルの再読み込みを確認後,1ステップの計 算時間を算出. Re-reading object fvSolution from file "system/fvSolution" 線型ソルバ設定ファイルの再読み込み Time = 0.016 更新後の線型ソルバによる解析 ExecutionTime = 3.15 s ClockTime = 5 s Time = 0.018 更新後の線型ソルバによる解析 ExecutionTime = 3.25 s ClockTime = 5 s #1ステップの計算時間t=3.25-3.15=0.10 6. 1ステップの計算時間をoptunaに報告して3.に戻り,ベイズ最適化を進める. Trial 0 finished with value: 0.1 and parameters: {'solvers/p/solver':0,'solvers/p/preconditioner':0, 'solvers/pFinal/solver':0, 'solvers/pFinal/preconditioner':0, 'solvers/UFinal/solver':0, 'solvers/UFinal/preconditioner':0}. Best is trial 0 with value: 0.1. 7
  • 9. 6 検討ケース ケース名 ベイズ最適化を行う線型ソルバの場 場の内容 チャネル流 ダムブレイク流 Case-0 なし なし なし Case-1 時間ループ最終反復時圧力 pFinal p_rghFinal Case-2 全ての圧力 p, pFinal p_rgh, p_rghFinal Case-3 全ての圧力と速度 p, pFinal, UFinal なし(*) • (*) momentumPredictor no; 8
  • 10. 7 チャネル流の解析条件 レイノルズ数Reτ 110 主流方向 一定の圧力勾配 主流・スパン方向 周期境界 ソルバ pimpleFoam 乱流モデル 無し(laminar) 領域分割手法 scotch(周期境界面は同領域) 速度線型ソルバ初期値 DILU-PBiCG 圧力線型ソルバ初期値 DIC-PCG 圧力線形ソルバの収束条件 残差10−6 以下 格子数 約3M(240 × 130 × 96) ノード数 8ノード 並列数 432 (54/ノード) ✓メッシュ生成に時間を要しない ✓構造格子のため,格子数変更が容易 ✓圧力と速度のみ解くので,「圧力線形ソ ルバの解析時間が支配的」という非圧縮性 流体解析の特性を素直に示す 9
  • 11. 8 チャネル流の計算時間(解析開始後2.5秒後まで) 0 20 40 60 80 100 120 140 160 180 0 0.5 1 1.5 2 2.5 Executiontime[s] Time [s] Case-0 Case-1 Case-2 Case-3 ← Case-0(最適化無) ← Case-1∼3(最適化有) • 実行時に線型ソルバ設定のベイズ最適化を行うCase-1∼3では,解析初期にCase-0よりも 遅い線型ソルバ設定の試行が多く行われるため,最適化無しのCase-0よりも遅い. • 約0.6秒後からはCase-0よりも速い線型ソルバ設定が多く試行されるようになる. • 約1.4秒後以降はCase-0よりも速くなる 10
  • 12. 9 チャネル流の計算時間(解析開始後20秒後まで) 0 200 400 600 800 1000 1200 1400 1600 1800 0 2 4 6 8 10 12 14 16 18 20 Executiontime[s] Time [s] Case-0 Case-1 Case-2 Case-3 ← Case-0(最適化無) ← Case-3(43%高速) • 20秒後の計算時間は,U, p, pFinalの全ての場について線型ソルバの設定を最適化する Case-3が最速となり,最適化無しのCase-0より43%高速化された. 11
  • 13. 10 チャネル流でのCase-3の線型ソルバ最適設定 初期値 p { tolerance 1e-06;relTol 0.05; solver PCG; preconditioner DIC;} pFinal { tolerance 1e-06;relTol 0; solver PCG; preconditioner DIC;} UFinal { tolerance 1e-05;relTol 0; solver PBiCG; preconditioner DILU;} ⇒ 最適設定 p { tolerance 1e-06;relTol 0.05; solver PPCR; preconditioner DIC;} pFinal { tolerance 1e-06;relTol 0; solver PPCR; preconditioner FDIC;} UFinal { tolerance 1e-05;relTol 0; solver PBiCG; preconditioner DILU;} • 圧力pとpFinalの線型ソルバが,PCGからPPCRに変更. • 最終反復時の圧力pFinalの前処理が,DICからFDICに変更. • 速度は変更無し. 12
  • 14. 11 ダムブレイク流の解析条件 ソルバ interFoam 乱流モデル 無し(laminar) 領域分割手法 scotch 圧力線型ソルバ初期値 DIC-GAMG 圧力線形ソルバの収束条件 残差10−8 以下 格子数 約2M(128 × 128 × 128) ノード数 4ノード 並列数 216 (54/ノード) 13
  • 15. 12 ダムブレイク流の計算時間(解析開始後0.5秒後まで) 0 20 40 60 80 100 120 140 160 0 0.1 0.2 0.3 0.4 0.5 Executiontime[s] Time [s] Case-0 Case-1 Case-2 ← Case-0(最適化無) ← Case-1∼2(最適化) • チャネル流と同様に,解析初期では,最適化無しのCase-0よりも,最適化を行う Case-1∼2のほうが遅い. 14
  • 16. 13 ダムブレイク流の計算時間(解析開始後2.5秒後まで) 0 100 200 300 400 500 600 700 800 900 1000 0 0.5 1 1.5 2 2.5 Executiontime[s] Time [s] Case-0 Case-1 Case-2 ← Case-0(最適化無) ← Case-2(22%高速) • 約0.9秒後以降は,最適化を行うCase-1∼2は,最適化無しのCase-0よりも速くなって いる. • 2.5秒後の計算時間は,p, pFinalの設定を最適化するCase-2が最速となり,Case-0より 22%高速化された. 15
  • 17. 14 ダムブレイク流でのCase-2の線型ソルバ最適設定 初期値 p_rgh { tolerance 1e-08;relTol 0.01; solver GAMG; smoother DIC; cacheAgglomeration false;} p_rghFinal { tolerance 1e-08;relTol 0; solver GAMG; smoother DIC; cacheAgglomeration false;} ⇒ 最適設定 p_rgh { tolerance 1e-08;relTol 0.01; solver PPCR; preconditioner FDIC; p_rghFinal { tolerance 1e-08;relTol 0; solver PCG; preconditioner {preconditioner GAMG; smoother DIC; agglomerator algebraicPair; cacheAgglomeration false; scaleCorrection true; nCellsInCoarsestLevel 10;}} 16
  • 18. 15 チュートリアルの実行時ベイズ最適化例(非多相流) カテゴリ ソルバ ケース名 並列数 高速化率[%] combustion fireFoam oppositeBurningPanels 6 -2.6 smallPoolFire3D 4 -6.0 reactingFoam chokedNozzle 3 16.4 compressible rhoPimpleAdiabaticFoam rutlandVortex2D 3 0.5 lagrangian MPPICFoam cyclone 12 7.8 incompressible pimpleFoam channel395 4 8.6 cylinder2D 8 0.3 decayIsoTurb 8 16.9 mixerVesselAMI2D-topologyChange 4 59.6 simpleFoam motorBike 6 2.5 • 並列計算かつ,計算時間が中程度(約5分間〜約24時間)のケースを対象にした. • 線型ソルバの実行時最適化により,チュートリアルの設定より遅くなる場合もあるが,概 ね高速化される. 17
  • 19. 16 チュートリアルの実行時ベイズ最適化例(多相流) カテゴリ ソルバ ケース名 並列数 高速化率[%] multiphase MPPICInterFoam twoPhasePachuka 4 0.2 cavitatingFoam throttle3D 4 21.4 compressibleInterIsoFoam depthCharge3D 4 10.4 interFoam waveMakerMultiPaddleFlap 2 1.4 waveMakerMultiPaddlePiston 2 50.0 interIsoFoam waveExampleStreamFunction 2 -5.0 damBreakWithObstacle 4 2.9 iobasin 8 -12.0 multiphaseEulerFoam damBreak4phaseFine 4 0.5 • 非多相流と同様に,実行時最適化により遅くなる場合もあるが,概ね高速化される. • 実行時最適化により遅くなる原因の調査や,その対策は今後の課題である. 18
  • 20. 17 まとめ • ハイパーパラメータ自動最適化ツールOptunaを用いて,チャネル流やダムブレイク流と, 並列計算を行うチュートリアルケースを対象に,線型ソルバ設定の実行時ベイズ最適化の 検討を行なった. • チャネル流やダムブレイク流については,計算初期において概ね設定が最適化され,それ 以降は最適化を行わないケースよりも高速に解析が行えることがわかった. • 並列計算を行うチュートリアルケースについても,最適化を行わないケースよりも高速化 される場合が多い事がわかった. 19
  • 21. 18 今後の課題 0 200 400 600 800 1000 1200 1400 1600 1800 0 2 4 6 8 10 12 14 16 18 20 Terminate optimization at trial #50 Use best parameters Executiontime[s] Time [s] Case-0 Case-1 Case-2 Case-3 Case-4 ← Case-0(最適化無) ← Case-3(43%高速) ← Case-4(77%高速) • 本検討では終始最適化を行なっているため,最後まで遅い設定の試行が避けられない. • チャネル流では47回目の試行で最適設定が得られているので,例えば50回の試行で最適 化を止め,それ以降は最適設定を使用したCase-4では,Case-0より77%高速化された. • 今後は,線型ソルバ設定ベイズ最適化の途中停止や再開始の手法について検討したい. 20
  • 22. 19 (付録)ダムブレイク流での圧力線型ソルバの反復回数 0 10 20 30 40 50 60 70 80 90 0 0.5 1 1.5 2 2.5 Numberofiterations Time [s] First Second Final Case-0 • 約0.7秒から増加 • 約1秒に最大 • 約1.4秒後から元の レベル 21
  • 23. 参考文献 [1] 今野雅. パラメータ自動最適化フレームワークOptunaを用いた数値流体解析の計算コス ト最適化. オープンCAEシンポジウム2019. オープンCAE学会, Dec 2019. http://www.opencae.or.jp/activity/symposium/opencae_symposium2019/, (accessed 2020-11-19). [2] Optuna. https://optuna.org/, (accessed 2020-11-19). [3] Takuya Akiba, Shotaro Sano, Toshihiko Yanase, Takeru Ohta, and Masanori Koyama. Optuna: A next-generation hyperparameter optimization framework. CoRR, Vol. abs/1907.10902, , 2019. [4] James Bergstra, Brent Komer, Chris Eliasmith, Dan Yamins, and David D Cox. Hyperopt: a python library for model selection and hyperparameter optimization. Computational Science Discovery, Vol. 8, No. 1, p. 014008, jul 2015. [5] 東京大学情報基盤センター スーパーコンピューティング部門. https://www.cc.u-tokyo.ac.jp/, (accessed 2020-11-19). 22