PowerPoint プレゼンテーション

自動チューニング機能を有するアプリケーション開発・実行環境
差分法に基づくポストペタスケールアプリケーション開発環境
古村 孝志・MAK Sum
東京大学 情報学環 総合防災情報研究センター/地震研究所
目的、本年度の研究実施計画
==研究の目的および内容==
差分法(FDM)によるアプリケーションの開発を支援するために
ppOpen-APPL/FDMの研究開発を実施する
==本年度の研究実施項目・概要==
(1) 運動方程式とナビエ・ストークス式を対象とした陽解法によるOpen MP/MPIハ
イブリッド並列プログラミングモデルに対応した3次元FDMコード(一様格子)を整備
する。
(2) T2K(東大)等のマルチコアクラスタで性能評価,最適化を実施し,その結果をも
とに,多様な基礎方程式のFDM計算に対応するマルチコアクラスタ向けppOpenAPPL/FDMのプロトタイプの設計を実施する。
(3)上記3次元FDMコードを使用して,ppOpen-AT/STATICのディレクティヴ挿入によ
る自動チューニングに向けて,サンプルコードを使用して基礎的なパフォーマンスデ
ータを取得する。
差分法に基づくポストペタスケールアプリケーション開発環境
目的、本年度の研究実施計画(続き)
==本年度の研究実施項目・概要(続き)==
(4) 平成24年度前半に実際の開発,実装を行い,秋に予定されている第一回公
開に備える。係数マトリクス生成機能,陽解法ソルバーについては,問題依存部分
との切り分けについて,他グループとも共同して検討を進める。
(5)一様格子差分法のデータ構造の特性を生かした並列前処理付き反復法によ
る疎行列ソルバーライブラリの開発を中島グループ,奥田グループと協力して実施
する。
差分法に基づくポストペタスケールアプリケーション開発環境
対象とする微分方程式と応用例
• 陽的(Explicit)計算・・・時間積分計算
ー 弾性振動(地震波伝播、地殻変動 etc.)
ー 流体計算(海洋波、津波 etc. )
• 陰的(Implicit)計算・・・行列ソルバの利用
ー 熱伝導(マントル対流 etc. )
ー 拡散(地震波散乱 etc. )
差分法に基づくポストペタスケールアプリケーション開発環境
汎用の差分法計算: モジュール化設計
陽的計算
陰的計算
ppOpen-MATH
ppOpen-MATH
ppOpen-HPC
差分法に基づくポストペタスケールアプリケーション開発環境
汎用の差分法計算: モジュール化設計(つづき)
汎用差分法計算のモジュール化(続き)
陽的計算
陰的計算
(1)基本コンポーネント
・モデル入力部
・計算出力部(netCDF形式)
・空間微分計算(陽的)
・Matrix solver利用(陰的)
・時間発展積分(陽的)
(2)ユーザ定義/選択コンポーネント
・境界条件(表面、モデル周囲)
・初期条件(定常状態、外力擾乱)
・係数Matrix生成・前処理(疎行列処理)
差分法に基づくポストペタスケールアプリケーション開発環境
差分法サンプルコード(1)地震波の伝播
基礎方程式
・運動方程式(釣り合いの式)
 xx  xy  xz


 fx,
x
y
z
 yz  yy  yz
uy 


 fy,
x
y
z



uz  xz  yz  zz  f z .
x
y
z
ux 
【計算例】
ランダム不均質媒質中の地震
波の伝播・散乱(オレンジはP波、
グリーンはS波)
・応力ー歪み構成方程式
 pq  (exx  eyy  ezz ) pq  2 epq
並列化効率(スレッド並列)
差分法に基づくポストペタスケールアプリケーション開発環境
差分法サンプルコード(2) 津波発生と伝播
基礎方程式
・ナビエストークス方程式
  2u  2u  2u 
u
u
u
u
p
u v  w
    2  2  2   g x
t
x
y
z
x
y
z 
 x
  2v  2v  2v 
v
v
v
v
p
 u  v  w     2  2  2   g y
t
x
y
z
y
z 
 x y
 2w 2w 2w
w
w
w
w
p
u
v
w
    2  2  2   g z
t
x
y
z
z
y
z 
 x
・連続条件
【計算例】
海底変動による海面変動(津
波)の発生と伝播
・境界条件(海面)
u v w
 
0
x y z
H
H
H
u
v
w
t
x
y
Speed-up
Scalability, tsunami code
並列化効率(スレッド並列)
7
6
5
4
3
2
1
0
0
5
10
# of core
15
20
差分法に基づくポストペタスケールアプリケーション開発環境
差分法サンプルコード(3) 熱拡散
0.5
サンプルコード(3)熱伝導方程式
Iterative solver using Krylov
subspace method, via MPI PETSc
library
Temperature along dotted line
(t=0.019)
7
6
5
4
3
2
1
0
0.5
Temperature
Speed-up
Program Scalability
0
4
8 12 16 20 24 28 32 36
MPI Process
0.4
0.3
0.2
0.1
0
0.4
0.6
x
Analytica (600 modes)
差分法に基づくポストペタスケールアプリケーション開発環境
0.8
1
Numerical
ppOpenAT 自動チューニングの例(片桐・中島による)
地震動シミュレーション
(ホットスポット)応力変数のアップデート部分
!oat$ install LoopFusionSplit region start
!oat$ name MyFDMkernel
ディレクティブの挿入: (1) Loop Fusion
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
RL(I) = LAM (I,J,K)
RM(I) = RIG (I,J,K)
RM2(I) = RM(I) + RM(I)
RMAXY(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J+1,K) + 1.0/RIG(I+1,J+1,K))
RMAXZ(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J,K+1) + 1.0/RIG(I+1,J,K+1))
RMAYZ(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I,J+1,K) + 1.0/RIG(I,J,K+1) + 1.0/RIG(I,J+1,K+1))
!oat$ SplitPoint
RLTHETA(I) = (DXVX(I,J,K)+DYVY(I,J,K)+DZVZ(I,J,K))*RL(I)
QG(I) = ABSX(I)*ABSY(J)*ABSZ(K)*Q(I,J,K)
ディレクティブの挿入:
!oat$ SplitPoint
SXX (I,J,K) = ( SXX (I,J,K) + (RLTHETA(I) + RM2(I)*DXVX(I,J,K))*DT )*QG(I)
SYY (I,J,K) = ( SYY (I,J,K) + (RLTHETA(I) + RM2(I)*DYVY(I,J,K))*DT )*QG(I)
SZZ (I,J,K) = ( SZZ (I,J,K) + (RLTHETA(I) + RM2(I)*DZVZ(I,J,K))*DT )*QG(I)
!oat$ SplitPoint
SXY (I,J,K) = ( SXY (I,J,K) + (RMAXY(I)*(DXVY(I,J,K)+DYVX(I,J,K)))*DT )*QG(I)
SXZ (I,J,K) = ( SXZ (I,J,K) + (RMAXZ(I)*(DXVZ(I,J,K)+DZVX(I,J,K)))*DT )*QG(I)
SYZ (I,J,K) = ( SYZ (I,J,K) + (RMAYZ(I)*(DYVZ(I,J,K)+DZVY(I,J,K)))*DT )*QG(I)
END DO
END DO
END DO
!oat$ install LoopFusion Split region end
(2) Loop Splitting
12通りの
チューニング
コード
10
差分法に基づくポストペタスケールアプリケーション開発環境
ppOpenAT 自動チューニングの例(片桐・中島による)
計算時間(秒)
10
1
1
2
4
8
16
0.1
0.01
スレッド数
Loop fusion (3次元ループ2,1次元)、Loop
splitting (いろいろな分割場所)による最適
化を評価
差分法に基づくポストペタスケールアプリケーション開発環境
ppOpenAT 自動チューニングー効果的なチューニング(2)
★京コンピュータ(あるいはFX10)を意識した性能チューニング
(1)スレッド並列、サイクリック分割
・ブロック分割ではキャッシュに共有データが入らない
サイクリック分割: !$OMP DO SCHEDULE(static,1)
(2)キャッシュ競合(スラッシング)の回避
・特定のキャッシュラインにアクセスが集中
配列サイズを変える(2**n  2**n±2)
(3)ソフトウエアパイプライニングの有効化
・実行時のレイテンシが大きい
ループ長(再内側)を長くする(配列順序入れ変え)
(4)SIMD化の誘導
・複雑プログラムではSIMD化できるかどうかわからない
アンローリング、再内ループ手動展開、等によるSIMD化の誘導
差分法に基づくポストペタスケールアプリケーション開発環境
H23年まとめ
開発状況
基礎方程式(応用)
Thread 並列版 MPI 並列版
自動チューニング
(1)運動方程式(地震動) ◎完成
◎
◎
(2)流体方程式(津波)
◎
◎
○
(3)熱伝導方程式(散乱) ー
◎
・
★H23年度計画ー課題
(1)差分法計算の汎用化、陽的計算のモジュール化
・継続課題
・陰的計算の検討
(2)係数マトリクス生成機能,陽解法ソルバーについて,
・問題依存部分との切り分け,他グループと共同
差分法に基づくポストペタスケールアプリケーション開発環境