今回は、OpenFOAMのPimpleFoamの小規模並列計算(MAX8並列)のベンチマークについて検討してみました。備忘録がてらまとめています。何かの参考になれば幸いです。
こんな方にオススメの記事です。
- 家庭用PCで流体解析してみたい方
- OpenFOAMについて少し知識のある方
モチベーション
で久しぶりにOpenFoamを使いました。
昔はノートパソコンでやっていたので並列計算はやっていませんでした。現在は小規模ながら計算機を導入したので並列計算ができるようになりました。
ただ、まともに並列計算をしたことがなかったので、「これくらいのモデル規模なら、並列数はこれくらいでOK」という判断ができません。この感覚を掴んでおくのは重要だと思うので調査してみることにしました。
以下、計算機のスペック。
計算機スペック
- OS:Ubuntu16.04LTS
- CPU:RYZEN 1950X 16コア 4GHzOC ※SMTはOff
- RAM: DDR4 16GB
ベンチマークモデル
- ソルバー:PimpleFoam
- 乱流モデル:LES Smagorinsky
- メッシャー:SnappyHexMesh
- セル数:Case1: 36万 Case2: 71万 Case3: 142万 Case4: 294万
- End time: 3秒
- 並列数:1, 2, 4, 8
検証結果
早速、検証結果です。
まず、各並列数での計算時間をまとめてみました。
この検討でモデル規模と並列化数による計算時間が把握できました。
※一応、生データも載せておきます。データの単位はすべて秒です。
nCPU | Case1 | Case2 | Case3 | Case4 |
---|---|---|---|---|
1 | 1077 | 3190 | 9496 | 24372 |
2 | 688 | 1999 | 5718 | 15110 |
4 | 490 | 1484 | 4252 | 11783 |
8 | 450 | 1350 | 3999 | 11302 |
次に、並列化効率です。
ちなみに、並列化効率=nCPUでの計算時間/1CPUでの計算時間 で算出してます。
モデルのセル数が大きくなると、並列化効率が僅かに低下しました。
各Caseの並列化効率に明確な差はなく、4並列と8並列の並列化効率はほとんど同じであることがわかりました。つまり、現状の計算環境であれば4並列で十分だとういことです。
ただ、思ったより計算に時間がかかるという印象です・・・。
このサイトを参考にすると、どうやらメモリが十分ではないかもしれません。この年末でメモリ増強も視野に入れていこうと思います。
まとめ
現状の計算環境では、4並列で十分であることがわかりました。
300万セルでは並列化効率が若干落ちたので、もし、今後、300万以上のモデル計算が必要になった際には、メモリ増強を考えてみます。
以上