200/0/9 数値流体解析の並列効率とその GPU による高速化の試み 清水建設 ( 株 ) 技術研究所 PHAM VAN PHUC ( ファムバンフック )
流体計算時間短縮と GPU の活用の試み 現 CPUとの比較によりGPU 活用の可能性 現 CPU の最大利用 ノード内の最大計算資源の利用 すべてCPUコアの利用 適切なアルゴリズムの利用 CPU コア性能の何倍? GPU の利用の試み 流体計算コードの一部のGPU 化 圧力方程式の GPU 化 有効な計算方法の抽出 難しい度と性能? 数値流体計算 2
対象流体コードと流体問題 計算コード : OpenFOAM.6.x コンパイラ Gcc 4.3.3,OpenMpi Cuda2.3 (Tesla) Cuda3.2(Fermi) 倍精度演算 実務流体問題 : 都市モデル 乱流モデル :RANS, LES 格子種 : 非構造格 並列計算法 : 領域分割法 格子数 : 200 万と2,000 万 計算格子の一例 解析ソルバ : GS 法 CG 法 AMG 法 3
CPU の最大利用
対象とする主な CPU 計算機 CPU 計算機 Opteron Xeon Xeon (2006) (2008) (200) 年代 2006 2008 200 CPU AMD Opteron Intel Xeon Intel Xeon Dual Core Dual Core Quad Core X 4CPUs X 2CPUs X 2CPUs コア / ノード 8 4 8 CPU クロック 2.6GHz 3.4GHz 3.33GHz 一部性能評価や大規模並列計算と GPU 開発の利用等に当たり 東京工業大学の共同利用 ( 産業利用 ) および先端研究施設共用促進事業 みんなのスパコン TSUBAME によるペタスケールへの飛翔トライアルユースにより TSUBAME.2 を利用
CPU 計算機の計算性能 4 2000 万格子の都市モデル Xeon(200) OpenFOAMの利用 ノード内の同 8CPU コアの評価 計算加加速率 3 2 Xeon(2008) Opteron (2006) 2006 年 2008 年 200 年 CPU 計算機の利用 : 2X/2years
CPU 計算機の計算並列効率 ノード内の CPU コアの評価 6 Xeon ノード (200) 2 8 コア : 6X (CPU コア性能 ) 計算加速速率 8 6 4 4 8 2 6 4 8 2 6 CPU コア (~ 並列数 )
CPU での流体計算の解析ソルバの性能 全体計算算時間 無次元の ターゲット実用 000 00 0 Xeon(200) 8CPUコアの利用 400 2 6X=2X 2 400 6X=2,400X 4 GS 法 ICCG 法 GS 処理 AMG 法 Xeon(200)CPU コアでの必要な高速率 4 6X=24X ICCG 処理 AMG 法 6X=6X 流体計算の圧力方程式の解法 GS 法 : Gauss-Seidel 法 ICCG 法 : 不完全コレスキー分解共役勾配法 AMG 法 : 代数的マルチグリッド法 (Algebraic Multi-Grid)
まとめ :CPU の現実用 Xeon(200) の 8コア 適切な解析ソルバの利用 ( 単 CPUコアの性能 ) GS 法 :2,400X GS 処理 -AMG 法 : 24X ICCG 法 : 2X ICCG 処理 -AMG 法 : 6X 同アルゴリズムの解析ソルバで 6X の高速化が必要 多数並列計算 (GPU 化?) での性能としては?
解析ソルバの並列計算の効率 TSUBAME.2 計算ノード利用 LES 乱流モデル 32 60 加速率 率 24 6 ICCG 法 8 ICCG 処理 -AMG 法 7s/step 0 0 6 32 48 64 48s/step 加速率 率 20 80 40 3s/step ICCG 法 9s/step ICCG 処理 -AMG 法 0 0 28 256 384 52 並列数 (CPU cores ) 並列数 (CPU cores ) 並列規模により解析ソルバの選定が重要
GPU 活用の試み
GPU 計算機のテスト環境 CPU Intel Xeon Quad Core 2CPUs (8cores) Intel Xeon Quad Core 2CPUs (8cores) Intel Xeon Quad Core 2CPUs (8cores) GPU - C060 4GPU (Tesla) 価格 ~00 万円 ~00 万円 +60 万円 2X C2070 2GPU (Fermi) ~00 万円 +80 万円 2X
OpenFOAM 流体計算とその GPU 化 (CPU) 開始 計算領域 初期化 全体計算時間 t=t+δt 0.8 U,V,W 運動方程式圧力の方程式その他の方程式 解析ソルバ GPU 解析ソルバ化 解析ソルバ 無次元計算算時間 0.6 圧力方程式の計算時間 0.4 60~70% 0.2 収束? t=t t max 終了 GS 法 (IC)CG 法 AMG 法 0 万格子ル 200 モデ 2000 0 万格子モデル
OpenFOAM 流体計算とその GPU 化 (CPU) 開始 計算領域 初期化 t=t+δt U,V,W 運動方程式圧力の方程式 AΦ=B その他の方程式 解析ソルバ AB A,B Φ 解析ソルバ AΦ=B 解析ソルバ (GPU) 収束? t=t t max 終了 GS 法 (IC)CG 法 AMG 法
GPU 構成とその GPU 化 GPU Multiprocessor MP:30 Shared memory(6kb) GPUアーキテクチャの詳細な考慮によるチューニングを実施していない Register memory Thread 群の並列処理 Global memory A, Q g g φg A Aφφ = Q CPU Chipset DRAM 主なメモリ利用 グローバルメモリ 一部の考慮 : A,, Q φ ッシング メモリアクセスのコアレ 一部 : 通信の同期化
GPU による解析ソルバの加速率 加速率 (GPU/C CPU) 2 0 8 6 4 2 0 流体計算 OpenFOAM コードに組み込んでその性能を評価 圧力方程式の収束解析 200 万格子モデル GS 法 ICCG 法 CG 法 GS 処理 ICCG 処理 Jacobi AMG 法 AMG 法前処理 速い解析ソルバは加速率が小さい
流体計算 : 単 CPU&GPU の処理法 無次元計算算時間 4 200 万格子 計算領域 3 モデル.8X 2 3.5X 圧力転送全体 CPU コア GPU 圧力方程式の解が収束まで (On-GPU) データ転送 無次元計計算時間 0 8CPU CPU CPU +Fermi 6 2000 万格子 5 モデル 4 3 2 0 6.7X 3X 3X.3X.X 8CPU CPU CPU CPU +Tesla +Fermi
流体計算 : 複数 CPU&GPU の処理法 領域の 2 分割 ( 例 ) 計算領域 2 無次元計算算時間 2.5 通信 0.5 CPU CPU データ データ 0 転送 転送 GPU GPU 圧力方程式の毎反復計算データ通信の実施 2000 万格子モデル 8CPU 4CPU +4Tesla 圧力転送全体 2CPU +2Fermi 計算領域の 計算領域の 計算領域の 8 分割 4 分割 2 分割 計算領域が大きく 計算負荷が大
流体計算 : 複数 CPU& 複数 GPU の処理法 領域の 4 分割 ( 例 ) 通信 2 3 領域分割 通信 計算領域 通信 4 CPU CPU CPU CPU 無次元計算算時間 2.5 0.5 2000 万格子モデル GPUの実用にはより高速化が必要 データデータ 0 転送転送 8CPU 8CPU 8CPU +4Tesla +2Fermi GPU GPU 圧力転送全体 圧力方程式の毎反復計算データ通信の実施 高速化には CPU/GPU の最大限の利用は重要
まとめ CPU の利用 2006 年 ~200 年 :2X/2 年 ノード (8コア,8 並列の実行 ) は単 CPUコアに対して6X 高速可能 計算高速化には適切な解析ソルバの利用が重要 ( 数十倍 ~ 数百倍 ) 遅い解析ソルバは並列効率が高い傾向と見られる GPU の利用の試み 計算規模により加速率 ( 単 CPU コアの性能 ) は変化 200 万格子規模 : 圧力 (3.5X), 全体 (.8X) 2000 万格子規模 : 圧力 (8.7X), 全体 (3.3X) GPU 化にはノード内の CPU の最大限の利用は重要 GPU の実用化には GPU のアーキテクチャの考慮やチューニングによる高速化が必要
ご清聴ありがとうございました 謝辞 本検討の一部の成果は, 東京工業大学の共同利用 ( 産業利用 ) および先端研究施設共用促進事業 みんなのスパコン TSUBAMEによるペタスケールへの飛翔トライアルユースによりTSUBAME.2を利用した. ここに, 記して謝意を表する. 2