Comments
Description
Transcript
GPUを用いた大規模シミュレーションと可視化
計算科学技術部門セッション 「シミュレーション可視化技術の最前線」 GPUを用いた大規模シミュレーションと可視化 小野寺 直幸、青木 尊之、下川辺 隆史、杉原 健太 東京工業大学 学術国際情報センター 発表内容 • 研究背景と研究目的 • 大規模計算に適した計算手法と可視化 • スーパーコンピュータ TSUBAME を用いた計算コードの性能測定 • 計算結果 • • 東京都心部気流計算 • 車体周りのラージエディ・シミュレーション • 卓球競技におけるピンポン球の飛翔計算 • 気液二相流計算 まとめ 研究概要 ・Large-eddy simulationによる乱 流解析 ・Graphics-processing unit(GPU) を用いた大規模並列計算 複雑物体周りの Large-eddy simulation 2009年 ∼ GTX285(2GBMem) 160x160x256, 4 GPU http://www.top500.org/lists/2014/06/ GPUとCPUの比較 NVIDIA Tesla K20X 演算性能 Intel Xeon E5-2697 v2 1.31 TFlops (倍精度) 演算性能 0.52 TFlops (倍精度) 3.95 TFlops (単精度) メモリバンド幅 250 GB/sec メモリバンド幅 59.7 GB/sec メモリ量 6 GB (GDDR5) メモリ量 128 GB (DDR3) CUDA コア数 2688 個 コア数 2 個 (24コア) CUDAコア CPUコア 差分法による非圧縮流れの解析 • 非圧縮性 Navier-Stokes 方程式 • 速度・圧力の時間発展方程式を計算 ūi = ūni 2 n+1 p̄ x2i ūn+1 i + ūni ūnj 1 + xj Re ūi = xi = ūi p̄n+1 xi t 2 n ūi x2j yj+1 ij xj t yj ui− 12 ,j pi,j vi,j− 12 yj−1 xi−1 xi xi+1 スタッガード格子配置 メモリのRead/Writeが頻発し計算効率が悪化 格子ボルツマン法による流体解析 • ボルツマン方程式 • 有限個の方向を持つ速度分布関数の時間発展方程式を計算 1 fi (x + ci t, t + t) = fi (x, t) (fi (x, t) fieq (x, t)) 方程式がシンプルで計算効率が良い 東京工業大学 青木先生の講義資料より抜粋 D2Q9モデル D3Q19モデル 差分法と格子ボルツマン法の演算密度の比較 • 差分法による非圧縮性流れの解析(FDM) ūi = ūni 2 n+1 p̄ x2i ūn+1 i • ūni ūnj 1 + xj Re + = 2 n ūi x2j ij xj NVIDIA M2050 t 能 理 ūi xi = ūi e p̄n+1 xi 性 論 in ofl t v ro p Im ed の で el od M o R FDM≒1 LBM≒2 格子ボルツマン法による流体解析(LBM) fi (x + ci t, t + t) = fi (x, t) 1 (fi (x, t) fieq (x, t)) Rooflineモデルを用いた理論性能 一般的に、格子ボルツマン法は差分法と比較して演算密度が高いため、 高い演算性能を得ることが可能 行列の反復計算を含む問題での計算速度の悪化 8 N=1283 / GPU Time (s/step) 7 6億7千万格子 6 (320GPUs) 5 ⇒4億格子 4 ⇒2億格子 3 (96GPUs) 2 ⇒1億格子 1 気液界面(VOF = 0.5) 気液界面の撹拌計算 0 (192GPUs) 0 50 100 150 200 250 300 350 Number of GPUs 1ステップあたりの計算時間 問題サイズが大きくなるに従って、Poisson方程式の反復解法の収束性 が悪化し、計算速度が低下 乱流の計算手法の分類 モデル DNS LES 特徴 すべての変動を計算 格子解像度以下の成分 をモデル化 計算負荷 大 中 解析精度・解像度 高い ・非常に多くの格子点数 が必要 中∼高い ・格子解像度を増やすこ とでDNSに近づく 低い RANS 変動成分をモデル化 小 ・幅広い現象が計算可能 である反面、精度が低い ・モデルの影響が大きい ラージエディ・シミュレーション • フィルター化されたNavier-Stokes方程式 物理量を格子で解像できる成分(GS)と格子解像度以下の成分(SGS)に分割し、SGS成分 をモデル化 u = ū + u0 @ ūi @ ūi ūj + = @t @xj • @ p̄ 1 @ 2 ūi + @xi Re @x2j @⌧ij @xj エネルギー 散逸 渦粘性モデルによるSGS応力 SGSのエネルギー散逸を分子粘性と同様にモデル化 ⌧ij = ui uj = ūi ūj 2⌫SGS Sij 1 Sij = 2 ✓ @uj @ui + @xi @xj ◆ GS SGS コルモゴロフの相似則 ラージエディ・シミュレーションの乱流モデル Smagorinsky モデル、Dynamic Smagorinsky モデル • Smagorinsky モデル 幅広く使われる代表的なSGSモデル。モデル係数の値を一定値とするため、経験が必要 ○ 計算がシンプル ⌫SGS = C4 |S| 2 • :定数 Dynamic Smagorinsky モデル △ モデル係数が一定(定数値)なため、 壁面近傍などで精度が低下 △ モデル係数の決定に経験則が必要 物理量に二種類のフィルターをかけることで、動的にモデル係数が決定可能 ⌫SGS = C42 |S| < Lij Lij > C= < Mij Mij > ○ 壁などの物体に対しても適用可能 △ 計算が煩雑 ūˆi ūˆj Lij = ūd i ūj d ˆ |S̄ˆ △ 全計算領域での平均化が必要 Mij = 24̄2 |S̄| S̄ij 24̄ˆ2 |S̄ ij : 計算領域全体での平均操作 →複雑物体周りの流れに適用できない →大規模計算に不向き ラージエディ・シミュレーションの乱流モデル Coherent-structure Smagorinsky モデル • Coherent-structure Smagorinsky モデル 速度勾配テンソルの第二不変量を局所的に求めることで、渦粘性係数を決定 ⌫SGS = C42 |S| C = C1 |FCS | 3/2 FCS = Q E ○ 渦粘性係数を局所的に決定可能 →複雑物体周りの流れに適用可能 →局所的なメモリアクセスのため大規模計算に適している 速度勾配テンソルの第二不変量(Q)と エネルギー散逸(ε) 格子ボルツマン法によるラージエディ・シミュレーション • Boltzmann 方程式 fi (x + ci t, t + t) = fi (x, t) streaming(並進移動) • 1 (fi (x, t) fieq (x, t)) + Fi collision (衝突・減衰) forcing term (外力) サブグリッドスケールモデルの適用 渦粘性モデルでは、SGSの効果を分子粘性と同様に表現 = 3 1 + c2 t 2 = 0 + (LBMの緩和時間) SGS (粘性 = 分子粘性+渦粘性) 平行平板間乱流の 速度勾配テンソルの第二不変量 格子ボルツマン法での物体境界面の表現手法 • Interpolated bounce-back法 壁面上で鏡面反射条件を与え、逆方向に跳ね返す境界条件 fluid (鏡面反射条件) fluid 壁面上での 運動量交換 ( bounce-back rule wall wall P.H.Kao, R.J.Yang, An investigation into curved and moving boundary treatments in the lattice Boltzmann method, (2008) Pierre Lallemand, Li-Shi Luo, Lattice Boltzmann method for moving boundaries, (2003) Postprocessing • Paraview (http://www.paraview.org) • Povray (http://www.povray.org) 共に Open-source multi-platform TSUBAME 2.0 の概要 System (58racks) TSUBAME 2.0 Peak performance 2.4 PFlops GPU : NVIDIA Tesla M2050 x 4224 (1408Node 3GPU/Node) Network: QDR InfiniBand x 2 (80Gbps) Rack (30nodes) Compute Node GPU×3 CPU 2 TSUBAME 2.5 の概要 System (58racks) TSUBAME 2.5 Peak performance 17 PFlops(SP) GPU : NVIDIA Tesla K20X (6GB) (1408Node 3GPU/Node) Network: QDR InfiniBand x 2 (80Gbps) Rack (30nodes) Compute Node GPU×3 CPU 2 GPUによる並列計算 • MPIライブラリを用いて、各計算領域の端部分を隣接ランクと交換 GPU GPU cudaMemcpy cudaMemcpy GPU CPU CPU GPU PCI Express PCI Express MPIによる領域分割 CPU MPI通信 CPU CPU QDR Infiniband CPU 大規模並列計算での通信のオーバーヘッド • GPUによる並列計算での計算プロセスの流れ 1.GPUによる計算 Kernel function 2.CPUによるMPI通信 D2H MPI send & recv H2D ノード内の計算速度が速いGPUでは、通信時間の割合が大きくなる MPIによるデータ転送の時間がオーバーヘッド オーバーラップ計算による通信の隠 stream[0] GPUのカーネル計算とCPUを用いたMPIの通信をオーバーラップ stream[1] • Kernel function[0] GPU D2H CPU MPI send & recv H2D MPI CPU Kernel function[1] GPU MPIの通信時間の隠 が可能となり、良いスケーリングが期待 Strong scalability on TSUBAME 2.0 • 全計算量域の格子点数を固定:192x512x512, 192x2048x2048, 192x4096x4096 ・オーバーラップ手法の導入により、 30%の速度向上 ・良い強スケーリングが得られたこ とより、より高速な解析が可能 Weak scalability on TSUBAME 2.0 and 2.5 • プロセスあたりの格子点数を固定:196 256 256 / GPU (N = 192 x 256 x 256) Performance [TFlops] 1250 TSUBAME 2.5 (overlap) TSUBAME 2.0 (overlap) 1000 TSUBAME 2.5 1142 TFlops (3968 GPUs) 288 GFlops / GPU 750 x 1.93 500 TSUBAME 2.0 149 TFlops (1000 GPUs) 149 GFlops / GPU 250 0 0 1000 2000 3000 Number of GPUs 4000 ・TSUBAMEのアップデートによ り、GPUあたり 1.93倍の高速化 ・3968 GPUを用いた計算で、 1.14 PFlops(単精度)の非常に高い 実効性能を達成 東京都心部の大規模気流計算 計算条件 計算領域サイズ 格子解像度 格子点数 GPUあたりの格子点 10km 10km 500m 1 m立方格子 新宿駅 528 億格子 東京駅 10,080 10,240 512 160 160 512 とデータサイズ 52 MB/変数 (単精度) GPU数 4032 台 境界条件 上空100mで10m/sの北風 渋谷駅 品川駅 東京都心部の大規模気流計算 計算データサイズ 計算条件 計算領域サイズ 格子解像度 格子点数 GPUあたりの格子点 10km 10km 500m 1 m立方格子 新宿駅 528 億格子 東京駅 10,080 10,240 512 160 160 512 とデータサイズ 52 MB/変数 (単精度) GPU数 4032 台 渋谷駅 境界条件 上空100mで10m/sの北風211GB/変数 と非常に大きいため、 データサイズが4032並列では 品川駅 各計算ノード内のローカルSSDを使用した並列 I/O 処理が必要 東京都心部の大規模気流計算 建物データ 計算条件 読み込んだ建物データ (株)パスコ TDM3D 簡易版 計算領域サイズ 格子解像度 格子点数 GPUあたりの格子点 10km 10km 500m 1 m立方格子 新宿駅 528 億格子 東京駅 10,080 10,240 512 160 160 512 とデータサイズ 52 MB/変数 (単精度) GPU数 4032 台 境界条件 上空100mで10m/sの北風 渋谷駅 品川駅 東京都心部1m解像度10km四方気流計算 10,080x10,240x512(4,032 GPUs) 東京都心部1m解像度10km四方気流計算 10,080x10,240x512(4,032 GPUs) 東京都心部1m解像度10km四方気流計算 10,080x10,240x512(4,032 GPUs) 東京都心部1m解像度10km四方気流計算 10,080x10,240x512(4,032 GPUs) 東京都心部1m解像度10km四方気流計算 10,080x10,240x512(4,032 GPUs) 東京都庁前 東京都庁前の速度分布 高さ200m 640 m 風向き(北風) 960 m 東京都庁前の速度分布 高さ100m 640 m 風向き(北風) 960 m 東京都庁前の速度分布 垂直断面 風向き(北風) 風向き 垂直断面図 (北風) 車体周りの流体計算 物体表面データ形式 • STLデータと距離を用いた物体表現 STLデータ(三角形の頂点と法線ベクトルからな るデータ)から、物体表面の距離関数を作成 車体周りの流体計算 計算条件 格子点数 3,072 1,536 768 4.2 mm 格子解像度 計算領域 60km/h 13m 6.5m 3.25m GPU数 288 台 計算時間 約20時間(20万ステップ) ピンポン球の飛翔計算 計算条件 格子点数 1,152 576 576 格子解像度 0.4 mm 速度 20 m/s 回転の種類 (i) 無回転 (ii) 横軸回転 (ii) Z-axis y z 20 m/s x (i) non-rotation rotation 40mm ピンポン球周りのラージエディ・シミュレーション(物体座標固定) (i) non-rotation (ii) z-axis rotation ピンポン球周りのラージエディ・シミュレーション(物体移動) > no spin ピンポン球周りのラージエディ・シミュレーション(物体移動) > top spin ピンポン球周りのラージエディ・シミュレーション(物体移動) > side spin Two-phase flow simulation • 差分法による非圧縮性二相流解析 r·u=0 @u + (u · r) u = @t @ + (u · r) @t =0 Positive area 1 1 2 rp + ⌫r u + F ⇢ ⇢ @ = sgn( ) (1 @⌧ @ + r · (u ) = 0 @t ⇢ = ⇢g + (⇢l ⇢g ) H( ) ⌫ = ⌫g + (⌫l ⌫g ) H( ) |r |) φ>0 Liquid Interface φ=0 Gas Negative area φ<0 符号付き距離関数を用いた 気液界面捕獲 Dam break simulation P.K.Stanby, A.Chegini and T.C.D.Barnes (1998) 15 cm ⇢g ⇢l ⌫g 36 cm ⌫l 45 st 1.8 cm Interface thickness 1.18[kg/m^3] 997 [kg/m^3] 15.4 e-06[m^2/s] 0.89 e-06[m^2/s] 0.72 [N/m] 2 cells 72 cm 乾いた床へのダム崩壊では水面の先端が床を うように安定に浸水するが、 濡れた床の場合には水柱の先端が激しく乱れ、砕波する Dam break simulation ⇢g ⇢l ⌫g ⌫l st Interface thickness 1.18[kg/m^3] 997 [kg/m^3] 15.4 e-06[m^2/s] 0.89 e-06[m^2/s] 0.72 [N/m] 2 cells 576x96x288 Bubble rising unsteady simulation ⇢g ⇢l ⌫g ⌫l 24 cm 22 cm st Interface thickness 1.18[kg/m^3] 997 [kg/m^3] 15.4 e-06[m^2/s] 0.89 e-06[m^2/s] 0.72 [N/m] 3 cells ・Symmetric wall boundary ! Substitute air value and vertical velocity 0.5 m/s 1cm 6 cm まとめと今後の計画 • GPUを用いた流体解析コードを開発し、TSUBAME 2.5において3968台 のGPUを用いた計算で、1.19 PFlopsと非常に高い演算性能を達成した。 • 格子ボルツマン法を用いた東京都心部1m解像度10km四方の気流計算に おいて、10,080 x 10,240 x 512の大規模計算を実施し、高層ビル群に より気流が乱される様子や幹線道路に沿って流れる「風の道」等の現象を 再現した。 • 気液二相流計算を実施し、細かな気泡が巻き込まれる様子を再現した。 • 今後の計画として、気液二相流計算において百億格子点以上の大規模計算 を実施する。