概要
私たちAeroグループは流体解析ソフトの高速化を目指していて, 一般にはComputational Fluid Dynamics (CFD)と呼ばれる研究分野に属しています. 流体の計算には多くの浮動小数点演算が含まれているため、 従来はスーパーコンピュータやクラスタなどを利用して計算を行っていました。 ところが、近年流体解析が航空翼などの設計ツールに使用されるようになってきたために、 より精度の高い解析を必要とするようになってきました。 現状ではスーパーコンピュータなどを利用しても数日から数週間の解析時間を必要としてしまい、またそのコストも問題となっています。 そこで私たちはJAXAとの共同研究のもとにFPGAを複数使用した専用計算機の構築を目指しています。 FPGA (Field Programmable Gate Array)とは、回路を何度でも再構成することのできるリコンフィギャラブルデバイスとして知られ、 アルゴリズムに合わせて専用回路を構築することができます。 このデバイスを用いることで安価ながらスーパーコンピュータ並の性能を出すことが可能であるといわれています。
CFD発展の必要性
CFDは流体の運動に関する方程式をコンピュータで解く手法のことで, 私達の研究はCFDの発展に結びつきます.従来,航空機の主翼や機体等が受ける空気流による影響は 風洞実験によって調べられていました. 風洞実験とは主翼や機体のサンプルを作成し, 実際に風洞内で流れを発生させる方法で, 莫大な費用および時間が必要となります.
CFDが発展していくと今まで時間,費用の問題で調べることのできなかったパターン まで調べることができるようになり,結果として以下のような恩恵を得られます.
- 航空機の安全性向上,燃料効率の向上
- 開発コストの低減,開発期間の短縮
- 宇宙開発の促進
近年の航空機の設計では,実際にCFDが導入され風洞での実験回数が削減されています. 例えば1980年代に設計されてBoeing 767の際は,77種類の翼が風洞で試験されました. 一方,2000年代に行われたBoeing 787の設計にはCFDが導入され, 風洞で試験された翼は11種類にまで減りました. 以上のことから,CFD技術は今後ますます発展していくことが望まれます.
Boeing 787
対象アプリケーション "FaSTAR"
FaSTARとはJAXAが開発しているCFDアプリケーションで,
私達が高速化の対象としているアプリケーションになります.
FaSTARの支配方程式にはNavier-Stokesの方程式が採用されているため,
下記方程式を解いていくことになります.
\[
\frac{\partial}{\partial t}\int_{V}^{}{\bf Q} \cdot dv + \int_{S}[{\bf F}({\bf Q})-\frac{1}{Re}{\bf F_{v}}({\bf Q})]\cdot {\bf ds} = 0
\]
※上記式中の\({\bf Q}\)は保存量ベクトル,\({\bf F}\)は非粘性ベクトル,\({\bf F_{v}}\)は粘性ベクトル,\({\bf ds}\)は面積を絶対値に持つ外向き垂直方向ベクトル,\(Re\)はレイノルズ定数となります.
上記Navier-Stokesの方程式を解く大まかな手順は下記のようになります.
- 対象とする空間を格子で分割する
- 各格子上の\({\bf F}\),\({\bf F_{v}}\)を算出する. この際,当該格子および周辺格子の\({\bf Q}\)値を用いて算出.
- 各格子状の\({\bf F}\),\({\bf F_{v}}\),\({\bf Q}\)を用いて時間積分をし, \({\bf Q}\)を時刻t+1の状態に更新します. その後,再びステップ2にもどり,目標の時刻になるまでシミュレーションを続行します.
FaSTAR演算手順のイメージ
FaSTARの特徴
非構造格子法の採用
FaSTARは現実の航空機設計にも応用できるようにするため, 空間の分割方法に非構造格子法を採用しています. 上記で説明したとおり,ある格子の粘性ベクトル等を求めるには周辺格子の保存量が必要になるのですが, 非構造格子法を用いると周辺格子へのアクセスパターンは複雑でグリッドデータごとに異なるようになります. したがって,格子間でのデータ依存が複雑になるため, GPU等で演算を並列化して高速化する手法が適用できません. このランダムかつ複雑なメモリアクセスパターンをどのように解消するかがポイントになります.
格子分割方法の比較
豊富な算出方法
研究例
Zynqクラスタ
疲れたからまた今度にゃん
Zynqクラスタのイメージ