文献名 “Performance Tuning of a CFD Code on the Earth Simulator” 発表者:近藤祐史 高橋一樹
Intorduction 乱流現象の研究では、Navier-Stokes方程式の直 接数値計算(DNS)が行われており、精度の良さ からスペクトル法が好まれて使われる。 しかし、スペクトル法はその変換に多くの時間 がかかるため最適化が必要である。 そこで今回は地球シミュレーター用に最適化し たItakuraらの論文を紹介する
地球シミュレーター ベクトル処理部と スカラー処理部がある ベクトルプロセッサと に対応する最適化がポイント! 計算プロセッサのピーク性能 8Gflops 総プロセッサ数 5120 計算ノードのピーク性能 64Gflops 総計算ノード数 640 計算ノードの主記憶容量 16GB ピーク性能 40Tflops 主記憶容量 10TB
スペクトル法 Navier-stokes方程式 境界条件:周期境界 空間微分:フーリエ・スペクトル法 時間微分:4次ルンゲクッタ法 フーリエ変換 フーリエ空間で計算するのが容易でないため実空間で計算! ここでFFTを用いる 4 4
計算量 一ステップあたりの計算量(格子点数N=n3) 時間発展→4次ルンゲクッタ法~O(N) 空間微分→代数演算~O(N) FFT及び逆FFT~O(NlogN) 計算量のほとんどはFFTであるので その最適化を行うことが必要!
並列化(概要) z 3D-FFTは全領域の情報が必要 XFFT 分散メモリで分割すると・・・ 2D-FFTなら個々のノードで独立に計算が可能 y ZFFT 6
並列化(概要) z y軸をx軸に転置してy分割からz分割へ (ここで通信をまとめて行う) x y z YFFT 転置したことによってx方向に無通信で1D-FFTが可能。 3D-FFTの完了 7
最適化 パディング real*8 u(N+1,N/nd,N) メモリアクセスの衝突の回避 ノード内の並列化(後述) ノード内の並列化(後述) 基底4のFFTの利用(後述) 一括転送 Remoto memory functionの利用 バッファリージョンにコピーすること無しにデータ転送ができる 8
最適化 ノード内の並列化 XFFT それぞれ独立なので並列実行 9
最適化 ノード内の並列化 それぞれ独立なので並列実行 ZFFT 10
最適化 ノード内の並列化 YFFT それぞれ独立なので並列実行 11
最適化 基底4のFFT ― ノード内CPU 8GFLOPS メモリ-CPU間の通信 32GB/s ― 基底4のFFTはメモリアクセスの頻度が基底2 のFFTより低いので高いパフォーマンスが期待できる。 2回の倍精度浮動小数点演算に対して 1個の倍精度データの供給しかできない。 メモリアクセスがボトルネック 12
計算性能 単精度計算の方が性能が出ている ・通信量が少なくなるからと考え られる ・通信量が少なくなるからと考え られる ndを固定してみるとNの増加に伴い 通信時間の割合が減る Nを固定してみるとndの増加に伴い 通信時間の割合が増える。 大きなサイズのデータ転送が良い 性能を引き出す 13
計算性能 線形な並列化効果が出ている 並列化効率がよい 14
計算方法 今回採用した方法 他の方法よりもパフォーマンスが高い! 15
まとめ 乱流のDNSをフーリエスペクトル法で解く際、 計算時間が最もかかる3D-FFTについて地球シ ミュレーターにおいて最適化を行った。 結果16.4TFLOPSという高速計算が実現した。
参考文献 16.4-TFLOPS Direct Numerical Simulation of turbulence by a Fourier Spectral Method on the Earth Simulator(2002) M.Yokokawa,K,Itakura et al Performance Tuning of a CFD Code on the Earth Simulator(2003) K.Itakura A.Uno,M.Yokokawa,M.Saito,Ishihara.T,Kaneda.Y
おしまい
補足(フーリエ変換) u 3成分の逆フーリエ変換 ω 3成分の逆フーリエ変換 u×ω 3成分のフーリエ変換 alias errorの除去 ×2 4次ルンゲクッタ ×4 1ステップあたり計72回のFFTが必要! 逆FFT FFT