自動チューニング機能を有するアプリケーション開発・実行環境 差分法に基づくポストペタスケールアプリケーション開発環境 古村 孝志・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 uy fy, x y z uz xz yz zz f z . x y z ux 【計算例】 ランダム不均質媒質中の地震 波の伝播・散乱(オレンジは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)係数マトリクス生成機能,陽解法ソルバーについて, ・問題依存部分との切り分け,他グループと共同 差分法に基づくポストペタスケールアプリケーション開発環境
© Copyright 2024 ExpyDoc