Processing math: 100%

プログラムの高速化・並列化サービスの事例

チューニングレポート<要約>:OpenFOAMのHECToRへの移植と性能調査

*ここに掲載するのは、エジンバラ大学 EPCCのGavin J. Pringle博士によるHECToRレポート「Porting OpenFOAM to HECToR, A dCSE Project, Gavin J. Pringle, EPCC, The University of Edinburgh, April 16, 2010」を要約したものです。

[2016年10月掲載]



概要

この文書はHECToRへの移植とベンチマーク結果を報告するものです。
OpenFOAM[1]は計算流体力学ツールボックスです。これは様々な領域の複雑な物理をシミュレートするツールで、化学反応や乱流、熱輸送を含む流体から、固体動力学や電磁気、金融オプションプライシングまでの領域に対応します。OpenFOAMの核となる技術はC++で記述されたフレキシブルなモジュール群です。これらは工学における特定の問題を解くソルバーや、単純なデータ操作から可視化やメッシュ生成に至るプリプロセス作業を実行するユーティリティ、物理モデルライブラリといったソルバーやユーティリティを用いたライブラリなどの構築に用いられます。OpenFOAMはMPI並列をサポートします。

このプロジェクトの目標は下記の通りです:

・HECToRへのOpenFOAMインストールとテスト
・英国のCFDコミュニティに利便性のあるOpenFOAMモジュールのベンチマーク
・HECToRユーザへオンラインマニュアルを提供する
・ベンチマーク結果の公開

インストール

このプロジェクトは英国国立スーパーコンピュータサービスHECToRで実行されました。システムの詳細はWebサイト[2]に掲載されています。このプロジェクトではHECToRフェーズ2aを使用しました。これは、5664ノードのCray XT4で構成され、各ノードはAMD 2.8GHz デュアルコア・Opteronプロセッサと2コアで共有される6GB RAMを搭載し、OSはCSE 2.1です。
HECToRは28ノードのX2ベクトルユニットも持ち、各ノードは4つのベクトルプロセッサで構成されています。
最終的にOpenFOAMのバージョン1.5および1.6がHECToRに移植されました。これらはデュアルおよびクアッドコアバージョンとして利用可能です。このプロジェクトではこれらのバージョンの結果検証も完了しました。バージョン1.6についてはプロファイリングを行い、HECToR特定の最適化を行いました。

OpenFOAMはGPLライセンスのオープンソースソフトウェアです。このプロジェクトではFoamXのインストールは行いませんでした。

ベンチマーク

下記のテストケースを用いました:

  1. ・3D天井駆動キャビティー流れ:OpenFOAMのicoFoamソルバーを用いて1M と8Mセルの2つのケースを行います。
  2. ・2Dダム崩壊:これはチュートリア例題で、OpenFoAMのinterFoamソルバーを用います。
  3. ・3Dダム崩壊:これは2Dダム崩壊の拡張版です。interFoamを用いて3Dの6.23Mセルで行います。
  4. ・3Dスプレー:これは2Dスプレー例題の拡張版です。pisoFoamドルバーを用いて、0.3M,2.5M,19Mの3ケースを行います。

OpenFOAMの開発者[4]と共に、3Dダム崩壊ベンチマークを構築しました。また、3DスプレーケースについてはPaul Garlick博士[5]からの助言を頂きました。BullのPatrice Calegari博士[6]とCSCのEsko Jarvinen博士[7]には、3D天井駆動キャビティー流れベンチマーク構築の助言を頂きました。

·3D天井駆動のキャビティー流れ

これはOpenFOAMチュートリアルの最初の例題である2D天井駆動のキャビティー流れの単純な拡張です。2Dケースと同じく、天井部がx方向に1m/sで動き、残りの壁は固定され、流れは層流と仮定されて、層流かつ等温、非圧縮性流体用のicoFoamソルバーで一様メッシュで解かれます。
2Dとは異なり、すべての出力を中止します。さらに100×100×100と200×200×200の2種の立方体メッシュを用います。100×100×100ケースは特に、他の場所でベンチマーク[10,11]に用いられており、これらを比較対象とします。

ここで、8プロセッサの立方体レイアウトはnpx=2,npy=2,npz=2の仮想グリッドです。既に報告がありますが、Cray XT4/XT5で3D天井駆動のキャビティー流れを実行した場合は、プロセッサの仮想トポロジーの違いは性能に大きな影響を与えません[10]。しかしながらnpxを可能な限り小さくした方が若干の性能向上がみられることが判りました。これはC++では配列の最後の次元がメモリー上で連続なためです。もし最後の次元がプロセッサを跨がなければ、より多くのデータがキャッシュライン上に保持されます。

通常の3次元メッシュでicoFoamを用いる場合、例えば2003セルの8Mグリッドケースでは、1024コアまでが良好な並列効率を維持することが示されました。

また、環境変数については、MPICH_PTL_EAGER_LONGとMPICH_PTL_MATCH_OFFを試しました。MPICH_PTL_EAGER_LONG=1を設定した場合は、ほとんどのケースで若干の性能向上がみられ、特に2003セルで40時間ステップ計算の場合には1024コアで7%の改善が見られました。

·2Dダム崩壊

これはチュートリアルの第2部を用いたケースです。チュートリアルに従いますが、MPICH_PTL_EAGER_LONGも用います。実行はnumberOfSubdomains= 1,2,4,9,16として行いました。

コア数4まで良好な並列効率を保ちます。これはHECToRの性能を引き出すには小さすぎるケースです。

·3Dダム崩壊

2Dダム崩壊チュートリアルを3Dへ拡張し、液滴が確認可能な程度の細密メッシュを用い、ここでは全6.23Mセルを用いました。

6.23Mセルを用いたinterFoamの実行では、128コアまで良好な並列効率を示しました。3Dダム崩壊のベンチマーク結果はHECToRのOpenFOAMページ[12]で閲覧できます。

·3Dスプレー

このベンチマークでは、OpenFOAMの利用のみならず工業的な現実世界のシミュレーションをモデル化します。このために、Paul Garlick博士[5]と共に3D乱流噴流のLarge Eddy Simulation LESを構築して実行しました。
この3Dモデルは中央の液体噴流が周囲の高速空気噴流で液滴化する、同軸噴霧化モデルです。この技術の応用としては、スプレーコーティング装置や、燃料燃焼器(ジェットエンジンやガスタービン)などがあります。このケースはOpenFOAMの初等的な噴霧化例である2D LESをベースにしています。

最初に噴流が液滴へ分裂する長さ(jet break-up length)と液滴サイズを、過去の実験と解析との比較と推定から検討し、同軸噴霧の構造として比較的単純なグリッドを作成しました。
次に比較的粗いグリッドを用いて、レイノルズ平均Navier-Stokes RANSモデルで3Dシミュレーションを実行しました。結果は定常解となり、乱流スケール長に関する情報を得ることが出来ます。この時の最小スケール長を、より詳細なLESモデルのセルサイズ決定に用いました。最後にRANSモデルの結果をLESモデルの初期構造に用いました。

この並列版のベンチマークにおいて領域分割には、npx=2,npy=2,npz=1,2,4…とした仮想プロセストポロジーを用いた単純な分割を行いました。これにより少なくともx-y平面での負荷バランスが取れます。
実行結果は、coarse(0.3Mセル), medium(2.5Mセル), fine(19Mセル)のジェットケースに対してそれぞれ、64,256,512コアまで良好な並列効率が示されました。

謝辞

このプロジェクトは、nAG Ltd.が運営するHECToRの分散計算科学および工学CSEサービスの基に実行されました。英国の国立スーパーコンピューティング・サービスである、HECToR:英国リサーチ・カウンシル・ハイエンド計算サービスは、リサーチ・カウンシルを代行するEPSRCが管理しています。そのミッションは英国学術界の科学および工学の研究支援です。HECToRスーパーコンピューターは、UoE HPCx Ltd.およびnAG Ltd.のCSEサポートサービスにより管理運営されています。

文献

[1] OpenFOAM web page, http://www.opencfd.co.uk/openfoam OpenFOAM web page
[2] HECToR website, http://www.hector.ac.uk
[3] Beech-Brandt, J., Cray Centre of Excellence, 2009, pers comm.
[4] Greenshields, C., OpenCFD, 2010, pers comm.
[5] Garlick, P., Tourbillion Technology Ltd, http://www.tourbillion-technology.com, 2010, pers, comm.
[6] Calegari, P., Bull, 2010, pers comm.
[7] Jarvinen, E., CSC, 2010, pers comm.
[8] Ness User Guide: http://www2.epcc.ed.ac.uk/~ness/documentation/index.html
[9] OpenFOAM User Documentation, http://www.opencfd.co.uk/openfoam/doc/user.html
[10] OpenFOAM Performance on Cray XT4/XT5, Esko Jarvinen, OpenFOAM-foorumi, http://openfoamfoorumi.com/wordpress/wpcontent/uploads/2009/02/ofperformanceoncray_foorumi.pdf, 2009.
[11] Calegari, P., Gardner, K., Loewe, B., Performance Study of OpenFOAM v1.6 on a Bullx HPC Cluster with a Panasas Parallel File System, Open Source CFD conference, Barcelona, Nov., 2009.
[12] HECToR OpenFOAM pages: https://wiki.hector.ac.uk/userwiki/OpenFOAM
[13] Garlick, P. and Jusaja, A. K., Laser Sheet Imaging of High-Velocity Air Atomised Water Sprays, 11th International Conference on Liquid Atomization and Spray Systems, 2009.
関連情報
MENU
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks