RISTニュース

No．
６１（２０１６）「京」、HPCI
における大規模並列化に向けたOpenFOAM高度化支援
OpenFOAM tuni
ngt
owar
dsmas
si
vel
ypar
alleliz
atio
natHPCIincl
udingt
heK computer
一般財団法人高度情報科学技術研究機構（RIST）
浅見暁、井上 義昭、青柳 哲雄）の産業利用課題「京」を中核とするHPCI（HighPer
for
manc
eCo
mput
i
ngI
nfr
astr
uct
ure
において、多く利用されているアプリケーションの一つが、流体シミュレーションコード
OpenFOAMである。OpenFOAMは多種多様な流体解析のための標準ソルバーが実装されており、ライセンス費用が不要でカスタマイズ可能なオープンソースソフトウェアであることから、産業界では注目度が高く、多数の企業で利用されている。しかしながら、「京」における大規模な計算において、使用メモリ量、通信時間についての問題に直面し、OpenFOAM自体が、大規模並列での実行を想定していないことが判明した。例えば、当初１万プロセスでの実行がメモリ不足のため不可能であったが、改善により２万プロセス以上での実行を可能とした。また、約６５００秒という極めて長い時間が初期処理に費やされていたが、通信処理の根本的な改善により、２６秒まで短縮することができた。本稿では「京」の登録機関であるRISTが利用支援の一環として実施した移植支援、プリポスト支援、高速化支援の各内容について紹介する。また、支援で得た知見を利用者と共有するためのワークショップ開催や富士通株式会社コンパイラ開発部門への働きかけ、外部発表等についても紹介する。
１．はじめに［１］に移植や利用に関する疑問、バグ対応、カス表１は「京」やHPCIの産業利用課題で使タマイズなどは、自力ですべて解決しなけれ用されているアプリケーションを課題数の順ばならない。

番で並べた一覧である。OpenFOAMは産業

OpenFOAMを利用する企業に対して有償利用課題において２番目に多く利用されていでサポートを実施しているベンダーは数社あるアプリケーションであることが分かる。上るが、「京」を利用する際の実践的なノウハ

位にランキングされるアプリケーションは、ウ、例えばビルドや効率的なステージングをLAMMPSやOpenFOAMの よ う な オ ー プ ン

行う実行シェルスクリプトの作成、高速化のソースソフトウェア（OSS）や、Front
Flow/
blue

ためのノウハウを持っているベンダーはほとのような国家プロジェクトで開発されたアプ

んどなく、利用者にとって「京」の利用は高リケーションである。いずれもライセンス費

い ハ ー ド ル と な っ て い た。従 っ て、Open-用が不要でカスタマイズが自由にできるとこ

FOAMを重点的な支援対象アプリケーショ

ろが企業にとっては魅力的であるが、オープンとした。

ンソースソフトウェアであるがゆえ、基本的－3－RI
STニュースNo．
６１（２０１６）

表１ 「京」産業利用で利用課題数の多いアプリケーションⅰ２．OpenFOAMとは［２］［３］［４］

う制約があるが、企業や個人の限られた範囲

OpenFOAM とは Opensource Field OperationAndManipulationの略で、C++で記で使用する場合にはその制約はなく、自由に利用可能である。

述された数値流体ソルバー群である。ライセ

２０１
６年６月現在OpenFOAMは、TheOpen-ンスはGPL（GeneralPublicLicense）に準FOAM Foundationから公開されているもの

じ て お り、TheOpenFOAM Foundationと、ESIグループのOpenCFD社から公開さ（http://openfoam.
org/）から、オープンソーれているものの２種類ある。いずれもWEBスソフトウェアとして公開されている。特徴か ら ダ ウ ン ロ ー ド 可 能 と な っ て い る。

として、非圧縮流れ、圧縮流れ、多相流、燃OpenCFD社（http://openfoam.
com/）では、焼、化学反応を伴う流れなど、多種多様な流

有償でプログラムのカスタマイズ、サポー

体解析に対応するソルバー（interFoamなど

ト、コンサルティングを行っており、Theⅱ

標準ソルバーの数は２００個余り ）が実装されOpenFOAM Foundat
ionか ら リ リ ー ス さ れている。また利用者の目的に合致した標準ソているOpenFOAMをベースとして機能拡張

ルバーが無い場合には、C++でソルバーを自されたOpenFOAM+（現在のバージョンは分で作りこむことも可能である。多種多様なv3.
0）を公開している。また、OpenFOAMは流体解析や機能に対応しているため、ソース年に２、３回のバージョンアップがなされ、

コ ー ド の 規 模 は 約２４０万 行 に 上 っ て い る。

機能強化、改善が行われている。

GPLライセンスの場合、ソフトウェアを改変して提供する場合には、そのソフトウェアの３．支援内容ソースコードも提供しなければならないといⅰ

OpenFOAMは２０１
３年から支援を開始し、2015年8月1日現在。H24年度～H27年度までの「京」産業利用課題（トライアル・ユースと実証利用）の採択課題の申請書から、利用企業数の多い上位のソフトウェア（インハウスを除く）を集計。OpenFOAMの件数はOpenFOAM関連のソフト（HelyxCore,iconCFD）を含めた数。

ⅱ http://cfd.
direct/openfoam/user
guide/standar
dsolvers/－4－RI
STニュースNo．
６１（２０１６）

これまで１４件の高度化支援を実施してきた。

OpenFOAMの利用状況と高度化支援内容の表２に「京」、HPCI課題における２０１
５年度の一部を示す。

表２

OpenFOAM利用状況と高度化支援内容（２０１５年１０月現在）†：九州大学情報基盤研究開発センター‡：統計数理研究所統計科学技術センター

上記に示す高度化支援内容の詳細は次の通３．
１． 利便性向上りであり、以降で説明する。

３．
１．
１． ビルド用パッチファイルの作成
OpenFOAMをビルドする際にg++やインテルコンパイラなど、ビルド用Make
file
内で（１）利便性向上のための支援
１）ビルド用パッチファイルの作成

数種類のコンパイラの選択が可能であるが、２）ステージングシェルスクリプトの作

当然ながら「京」向けのコンパイラの選択肢
はなく、そのままではビルド不可能である。

成

また、OpenFOAMのバージョンや「京」の３）経過時間指定による終了指定パッチ

言語環境により、コンパイルエラーが多発す

ファイルの作成
４）リスタート計算用スクリプトの作成るため、エラーの修正作業のみでもかなりの（２）アプリケーションの大規模化、高速化の時間を要する。利用者の作業負荷軽減のため、「京」向けのコンパイラやオプションの設支援
１）冗長メモリ量の削減

定、ソースコードの修正も含んだパッチファ２）通信時間の削減

イル（OpenFOAMのバージョン、言語環境ご３）コンパイルオプションの最適化とに準備）、およびビルド手順書を作成した。
ちなみに「京」向けのビルドは、コンパイルエラーを全て取り除いた状態でも、およそ２高度化支援を通じて作成されたビルド用日間を要する。

パッチファイルやシェルスクリプトは、すべて利用者へ提供可能である。

３．
１．
２． ステージングシェルスクリプトの作
成［５］「京」でプログラムを実行する場合、ログイ－5－RI
STニュースNo．
６１（２０１６）

ンノードから必要な入力データファイルを計には、ステージアウトの前にtar
コマンドで算ノードへ送ったり、計算結果ファイルを計ファイルをまとめ、ファイル数を少なくする算ノードからログインノードへ戻したりすることが有効である。大規模計算の際にはファ必要がある。この作業をステージング（それイル数だけでなく格納されるデータ量も多くぞれステージイン、ステージアウト）と呼んなるため、ファイルをまとめる処理に非常にでいる。

時間を要していたが、圧縮形式を見直し、ラOpenFOAMの並列実行の場合、計算結果ンクディレクトリを使用してtar
コマンドをのファイル数が数千から数万ファイルと非常並列に実行することにより、tar
コマンドのに多くなる。そのため、ステージアウト可能実行時間を約１/８５（約７３００秒を８６秒）にするなファイル数の上限を超えてしまうと、スことができた（図１）。

テージアウトに失敗する。これを避けるため

図１

ランクディレクトリと並列tarによる実行時間短縮（１９２プロセス）

３．
１．
３． 経過時間による終了指定パッチファを参考に長時間ステップでの実行時間を見積イルの作成［６］もる必要があった。しかし、時間刻幅を自動「京」では１ジョブの実行時間は最大で２４時調整する機能を使用した場合、見積もり通り間という運用上の制限があるため、その中でと は な ら な い 場 合 も あ る。入 力 フ ァ イ ル

ジョブを終了させる必要がある。３．
１．
２のtar（controlDict）で指定した（希望終了）経過

コマンド処理を含むプログラムの実行が２４時

時間と実行開始からの経過時間をタイムス間を超えてしまうジョブの場合、経過時間テップ毎に比較し、指定した経過時間に到達オーバーのエラーとなり、それまでの計算結していなければ次のタイムステップへ、指定果ファイルをステージアウトできない（計算結した経過時間に到達すれば、次のタイムス果が回収できない）恐れがある（図２の上部）。

テップへは進まずに終了させる機能（図２のOpenFOAMを２４時間以内（あるいは指定下部）を追加し、パッチファイルとして提供時間内）に終了させたい場合には、計算ス可能とした。このパッチファイルは「京」のテップ数やシミュレーション時間で終了させようなファイルのステージングを必要とするる機能を用いて、小ステップ数での実行時間システムで有効である。

－6－

RI
STニュースNo．
６１（２０１６）

図２ 「京」での経過時間制限

３．
１．
４． リスタート計算用スクリプトの作クトリを含むため、無駄なステージングの転成［６］送が発生してしまう。この無駄なステージン

OpenFOAMのリスタート計算は、コントグの転送時間削減のため、res.
tgz
ファイルかロールファイルの他に、最終タイムスタンプらリスタートに必要な最終タイムスタンプディレクトリのデータのみ入力ファイルとしディレクトリのみを抽出し、リスタート計算てステージインできれば、次の時刻からのリ時の入力データとして使えるようなシェルススタート計算が可能である。図３に示す全てクリプトを作成した。こちらも「京」のようのタイムスタンプディレクトリを含むなファイルのステージングを必要とするシス

res.
tgz
ファイルをステージインした場合、リテムで有効なシェルスクリプトとなっている。

スタートに不要な古いタイムスタンプディレ

図３ 「京」での経過時間制限－7－RI
STニュースNo．
６１（２０１６）３．
２． アプリケーションの大規模化、高速化の使用メモリ量は減少していくが、１９２ノー

３．
２．
１． 冗長メモリ量の削減［５］ド（１５３６プロセス）を超えるあたりから増加「京」の１ノードあたりの搭載メモリ量はに転じ、１５３６ノード（１２２８８プロセス）を超え

１６Gバイトであり、そのうちプログラムで使ると、１ノードあたりのメモリ量を超え、異用できるのはシステム領域を除いた約１４Gバ常終了することが判った。調査の結果、通信ⅲ

イトである。OpenFOAMの実行時 の使用用の管理テーブル配列が冗長に確保されていメモリ量を調査したところ、図４に示すようたことが判り、必要な時に必要なだけ確保をに、ある程度の並列数まではMPIによる領域行うよう改善をおこなった結果、２万プロセ分割の効果で１ノード（８プロセス）あたりスを超える並列数での実行が可能となった。

図４

１ノード（８プロセス）あたりの使用メモリ量

３．
２．
２． 通信時間の改善 ［４］合が多い。以下に事例を紹介する。

OpenFOAMでは大規模並列実行時に、通OpenFOAMに含まれるデータ交換を行う信時間が性能のボトルネックとなった。特にソースコードexc
hange.
C（combineSc
atter/

集 団 通 信 に つ い て は、MPIの集団通信

combi
neGat
her）では、全プロセスのテーブ（Alltoall）で実装できるところを、MPIの単ルの内容を集め、それを各プロセスへ転送す一通信（Send/Recv）の繰り返しで実装され_る た め に、バ イ ナ リ ー ツ リ ー 形 式 のMPIており、数千並列以上の大規模な並列数を想Se
nd/MPI_Recvを 使 用 し て い た。図 ５ に定したものにはなっていなかった。理由は定「京」の性能解析ツールfappの解析結果を示かではないが、開発時のMPIの集団通信の性す。横軸はプロセスのランク番号、縦軸は能があまり良くなかった可能性がある。
「京」

MPI_probe
通信の経過時間（通信の待ち時のMPIの集団通信は最適化されているため、間）となっているが、ノコギリ状となっておこれらの関数を直接呼び出した方が高速な場り、インバランスが大きいことが判った。分ⅲ

フラットMPIでの実行。１ノードに８プロセスを割り当て。

－8－

RI
STニュースNo．
６１（２０１６）

析の結果、図７の左図に示すように送信と受５のMPI_probe
時間の最大は約１９０秒となっ信のタイミングが適切でなく、通信完了までている。
）に長い時間を要していることが判った。
（図図５

MPI_probeのfappMPI情報（１２８０プロセス）（横軸はMPI
ランク番号、縦軸は時間（単位：秒）。カラーバー：赤色が最大値、青色が最小値を示す。）

通信を行うループの順番を逆順に変更

ら約４６秒へ）にすることができた。図７の右（ループリバース）することにより、通信のタ図に改善後のcombi
neSc
atterの通信イメー

イ ミ ン グ が 改 善 さ れ、図 ６ に 示 す よ う にジを示す。左図と比較して通信の順番が変わ

MPI_probeの経過時間を約１/４（約１９０秒かり、通信の効率が向上していることが判る。

図６

改善後のMPI_probeのfappMPI
情報（１２８０プロセス）（横軸はMPI
ランク番号、縦軸は時間（単位：秒）。カラーバー：赤色が最大値、青色が最小値を示す。）－9－RI
STニュースNo．
６１（２０１６）

図７combi
neSc
atterの通信のイメージ

また、単一通信を用いた集団通信のパター

１回のみの実行のため、多少時間がかかったンに着目し、MPI_Gat
her/
MPI_Scatter
関数としても通常は無視してしまうことが多い

やMPI
_Al
ltoAll関数に置き換える修正をが、２時間近く要するのでは、デバッグや実行った。この修正により、特に高並列実行時行結果の検証、計算機資源消費の観点から非に爆発的に時間が増加してしまう初期処理時常に効率が悪い。この初期処理部分を最終的間（タイムステップループに入るまでの処理には１/２５０（約６５００秒から２６秒）に短縮する時間）を削減することができた。図８に初期ことができた。この通信部分の改善は、初期処理（水色部分）、タイムステップループ部分

処理以外にタイムステップループの部分でも（赤色部分）の測定結果を示す。オリジナルの有効となっており、実行時間は図８（青色部状態では、約６５００秒が初期処理に費やされて分）より約１/７（４４７秒から６５秒）となっていた。さらに並列数を増やして実行した場いる。実際の計算ではタイムステップループ合、２４時間でタイムステップループまで到達部分が支配的になるため、約７倍程度の性能しなかったケースもあった。初期処理部分は向上が得られると期待される。

図８

初期処理とタイムステップループの時間の推移

－10－

RI
STニュースNo．
６１（２０１６）３．
２．
３． コンパイルオプションの最適化［５］整備及び性能向上に多くの課題があり、「京」「京」ではコンパイルオプションとして－の 産 業 利 用 に 大 き な 障 害 と な っ て い た。

ⅳ

Kf
ast の指定が推奨されているが、Open-RI
STでは、今まで述べてきたように１）利便FOAMの場合、このオプションを指定すると性向上のための支援、２）アプリケーション最適化の副作用のため、実行時エラーとなの大規模化、高速化の支援を積極的に行ってる。そこで、実行時間コストが大きく、実行きた。OpenFOAMの支援で得られた知見や時エラーが発生しない一部の演算関数に限定利用ノウハウを利用者へ提供し、利用者間のして－Kf
astを指定して高速化を図り、また

情 報 交 換 の 場 と し て、OpenFOAMワ ー ク

OpenFOAMのベクターマシン用のマクロをショップを開催している。OpenFOAMワー展開するオプションを指定するようにした。

での移植状況
クショップでは「京」やHPCI

さらに富士通株式会社のコンパイラ開発部門や高度化支援の紹介、産業利用課題参加企業

から、－Kfastの最適化レベルに近く、副作の計算事例の紹介を中心に２０
１
３年１０月に第１用のない最適化オプションの情報を入手し、回目を開催、その後３年連続で毎年１０月に開以降はこれらのオプションを各利用者へ提供

催しており、民間企業からの参加は、第１回している。

４３人 中３８人（８８％）、第 ２ 回６５人 中５３人（８２％）、第３回８４人中５５人（６５％）となって

３．
２．
１冗長メモリ量の削減と、３．
２．
２通信時いる。図９に２０
１
５年度に開催されたワーク間の改善の修正（exchange.
C）については、

ショップのアンケート結果の一部を示す。内OpenCFD社へ情報提供を行い、同社で公開

容については、十分満足と満足で９０％を超えされているOpenFOAM+版へ反映されるこていることが判った。民間企業からの参加がとになった。

多数を占めている中で、「京」やHPCIでのOpenFOAMの大規模解析に向けた利用を促

４．その他の活動

進し、受講者のスキルアップを通して産業界

４．
１． OpenFOAMワークショップ［１］［５］における計算科学研究の人材育成に貢献して［６］［７］［８］いる。

OpenFOAMは「京」への移植、実行環境

ⅳ

ターゲットマシン上で高速に実行するオブジェクトプログラムを作成するためのオプション。
‐O3とその他の最適化オプションを組み合わせたプリセットオプションとなる。

－11－

RISTニュースNo．
６１（２０１６）

図９ アンケート結果

４．
２． 富士通株式会社コンパイラ開発部門へテンプレートの追加や、OpenFOAM特有の働きかけ［９］のPstr
e
amBuf
fer
全体データ交換形態を必OpenFOAMの演算性能は、C++コンパイ要最小限の隣接データ交換形態に改良する

ラの性能改善が寄与する部分が大きいため、ことにより、「京」において並列数の上限が富士通株式会社のコンパイラ開発部門と９
１
５２並列まで実６
１４４であったところを、４OpenFOAMの性能について情報交換や改善行できるようにアプリケーション全体の実提案を行った。一例として、OpenFOAMの行効率を向上させた。

性 能 解 析 に つ い て 挙 げ る。OpenFOAMを２）MPI_並 列 とThread並 列 を 用 い た

ソース行番号に対応した性能解析を行うため

Hybrid並列の検討、および計算効率を向の －Nline
オプションでコンパイルを行う

上させるための検討、及び試行を行った結と、ライブラリのサイズが肥大化し、リンク

果、MPI並列時と同等の性能を実現するこや実行が不可能となった。OpenFOAM固有とができ、Hybrid並列化の有効性を示すの問題であったが、これを富士通に伝えた結ことができた。

果、機能強化された評価用のコンパイラの提供を受けた。この評価用コンパイラの機能

５．まとめは、今後「京」の正式版コンパイラに反映さ高度化支援を通じてOpenFOAMの各種ソれる予定である。

ルバーの分析を行い、「京」やHPCIの計算機（FX10、UV2000）において、大規模実行を４．
３． 外部発表（情報処理学会）［１０］［１１］するための利便性の向上や、メモリ量の削

情報処理学会第１５
１回ハイパフォーマンス減、通信方法の変更による性能向上を達成でコンピューティング研究会にて、清水建設株

きた。OpenFOAMを含む高度化支援はこれ式会社、富士通株式会社と共著で「京」におまで１０８件実施しており、支援終了後のアン

けるOpenFOAMの性能向上について、下記

ケートでは９０％の利用者が満足と回答していの２件の発表を行った。

る。

１）「京」コンピュータのTo
fu高機能バリア

今年度も高度化支援依頼を多数受けてお通信機能を活用して、データ型に合わせたり、すでに新たな高速化への取り組みとし

－12－

RI
STニュースて、対象物の変形に伴う移動メッシュや他の［６］ 井上

No．
６
１（２０１６）

義昭（高度情報科学技術研究機

線形ソルバーについての分析、性能改善作業

構）：「京」OpenFOAM移植＆支援状を開始している。今後ポスト「京」に向けて況

さらなる大規模での実行が可能となるよう、

プ ２０１
５年１０月１５日

nFOAMワークショッ
第３回Ope［７］ 山本また利用者の期待に応えられるよう、引き続秀喜（高度情報科学技術研究機構）：OpenFOAM移植状況

き支援を行っていきたいと考えている。

第２回

OpenFOAMワークショップ ２０１
４年
１０月１７日６．謝辞［８］ 小林高度化支援を行うにあたり、計算機リソー

寛（高度情報科学技術研究機

スを提供していただいたHPCI
課題参加企業構）：OpenFOAMワークショップ～性各社に感謝する。また、「京」の運用を行って能評価手順と大規模実行時の問題点～

いる理化学研究所計算科学研究機構を始め、第３回OpenFOAMワークショップ

九州大学情報基盤研究開発センター、統計数

２０１
５年１０月１５日

理研究所統計科学技術センターのスタッフの［９］ 千葉修一（富士通）：「京」コンピュー

方々には、OpenFOAMを実行する際の計算

タにおける富士通の取り組みとOpen-機の利用方法などについて、多大なるご支援

FOAMの 評 価をいただいた。併せてここに深く感謝する。

ワークショップ ２０１５年１０月１５日［１０］ ファム［１］ 新宮バンフック（清水建設）、井義昭、浅見暁（高度情報科学技上

７．参考文献哲（高度情報科学技術研究機

第 ３ 回OpenFOAM術研究機構）、内山学（清水建設）、構）：「京」を中核とするHPCI
産業利

千葉

用課題のご案内 第３回OpenFOAM

タでのC++型流体コードにおけるMPI

ワークショップ ２０
１５年１０月１５日の評価［２］ htt
p://www.
geo
cities.
co.
jp/

修一（富士通）：「京」コンピュー
第１５１回ハイパフォーマンス

コンピューティング研究発表会 vol.

penguinitis
2002/study/
OpenFOAM/

2015HPC151,no.19,pp.19,2015-

OpenFOAMi
nfo.
html0923［３］ http://cfd.
direct/openfoam/［１１］ 内山学、ファム

バン

フック（清義昭（高度情報科学技術研究機水建設）、千葉修一（富士通）、井上nFOAMの 性構）：「京」に お け るOpe

義昭、浅見暁（高度情報科学技術［４］ 井上能評価

研 究 機 構）：OpenFOAMに よ る 流 体

平成２６年度「京」における高コードのHybr
id並列化の評価

速化ワークショップ ２０
１４年１
２月１９日

第１５１

義昭（高度情報科学技術研究機回ハイパフォーマンスコンピューティ構）：「京」で のOpenFOAM支 援 内 容

ン グ 研 究 発 表 会 vol.2015HPC-と 実 績 第 ２ 回OpenFOAMワ ー ク

151,no.
20,pp.
16,20150923［５］ 井上ショップ ２
０１４年１０月１７日－13－