自動チューニング機構を有する アプリケーション開発・実行環境 ppOpen-HPC 中島研吾 東京大学情報基盤センター スーパーコンピューティング研究部門 佐藤正樹(東大・大気海洋研究所),奥田洋司(東大・人工物工学研究センター), 古村孝志(東大・情報学環/地震研),岩下武史(京大・学術情報メディアセンター), 阪口秀(海洋研究開発機構) 2011年10月11日 20111011 • ppOpen-HPCとは • スケジュール • H23実施状況と見通し 2 20111011 3 背 景(1/2) • 大規模化,複雑化,多様化するハイエンド計算機環境の 能力を充分に引き出し,効率的なアプリケーションプログ ラムを開発することは困難 • 有限要素法等の科学技術計算手法: – プリ・ポスト処理,行列生成,線形方程式求解等の一連の共通 プロセスから構成される。 – これら共通プロセスを抽出し,ハードウェアに応じた最適化を 施したライブラリとして整備することで,アプリケーション開発者 から共通プロセスに関わるプログラミング作業,並列化も含む チューニング作業を隠蔽できる。 – HPCミドルウェア 20111011 4 背 景(2/2) • A.D.2000年前後 Applications – GeoFEM,HPC-MW(奥田,中島) – 地球シミュレータ,Flat MPI,FEM • 現在:より多様,複雑な環境 GeoFEM, HPC-MW etc. Fortran, C, MPI, OpenMP … – マルチコア,GPU – ハイブリッド並列 Vector, Scalar, MPP … • MPIまでは何とかたどり着いたが・・・ • 「京」でも重要,全く普及しておらず FEM code developed on PC I/F for I/O I/O – CUDA,OpenCL – ポストペタスケールからエクサスケー ルへ • より一層の複雑化 I/F for Mat.Ass. Matrix Assemble I/F for Solvers Linear Solver I/F for Vis. Vis. HPC-MW for T2K I/O Matrix Assemble Linear Solver Vis. HPC-MW for Earth Simulator I/O Matrix Assemble Linear Solver Vis. HPC-MW for Next Generation Supercomputer 5 Hybrid並列プログラミングモデル – OpenMP – CUDA, OpenCL core core core memory memory core core core core core core core core memory OpenMP/MPI Hybrid core core core core core core core core memory • Multi Threading core memory – MPI memory • Message Passing Flat MPI core core core core Key-Issues for Appl’s/Algorithms towards Post-Peta & Exa Computing Jack Dongarra (ORNL/U. Tennessee) at SIAM/PP10 • ヘテロジニアスなアーキテクチャ: Hybrid/Heterogeneous Architecture – Multicore + GPU – Multicore + Manycore (more intelligent) – Multicore + GPU + Manycore • • • • 混合精度演算:Mixed Precision Computation 自動チューニング:Auto-Tuning/Self-Adapting 耐故障性:Fault Tolerance 通信削減アルゴリズム:Communication Reducing Algorithms 6 20111011 7 ppOpen-HPC:概要 • ヘテロジニアスなアーキテクチャによる計算ノードを有す るポストペタスケールシステムの処理能力を充分に引き 出す科学技術アプリケーションの効率的な開発,安定な 実行に資する – pp= post petascale – Five Key-Issuesを考慮 • 東大情報基盤センターに2014年度に導入予定の数10 PFLOPS級システム(ポストT2K)を最終的なターゲット: – スパコンユーザーの円滑な移行支援 – T2K,東大次期システム(PFLOPS級),京 – TSUBAME 2.0,eScience GPUクラスタ(東大柏) 20111011 8 東大情報基盤センターのスパコン FY H17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Hitachi SR11000/J2 Our Last SMP 18.8TFLOPS, 16.4TB >50TFLOPS, >7TB 大容量メモリを使って自動並列化 MPPへ移行,センターによるサポート Hitachi HA8000 (T2K) 140TFLOPS, 31.3TB MPIによる並列化,メモリは遅いが通信は良い PFLOP System w/o Accelerators >1PFLOPS, >150TB Hybridへの転回点,Flat MPIでも高い性能 Post T2K/Heterogeneous >O(101)PFLOPS 本研究のターゲット Peta 京 Exa 20111011 9 対象とするアーキテクチャ • ホストCPU – 8~16コア程度を有するマルチコア低消費電力CPU • アクセラレータ – 数十~数百のコアを有する複数のアクセラレータ – PCI Expressに接続 • GPGPU:ホストCPUからCUDAまたはOpenCLによって利用する • Intel Many Integrated Core(MIC)アーキテクチャに基づくメニーコア (Knights Series):軽量OS,コンパイラが稼働する • GPGPU+MICメニーコアもあり得る • ノード間ネットワーク:Infiniband等 • アクセラレータ間通信はホストCPUを経ないで可能 • Hybrid並列プログラミングモデルは必須 20111011 10 ppOpen-HPC:基本的方針 • 対象離散化手法による分類(次ページ) • ハードウェアに依存しない共通インタフェースを有するア プリケーション開発用ライブラリ群,耐故障機能を含む実 行環境を提供 – 各離散化手法の特性に基づく • 自動チューニング技術の導入により,様々な環境下にお ける最適化ライブラリ,最適化アプリケーション自動生成 を目指す • 数値ライブラリ,システムソフトウェア,アプリケーション の専門家の協力:Co-Design • 既存ソフトウェア資産(e.g. HEC-MW)の効率的利用 • 実際に動いているアプリケーションから機能を切り出す 20111011 11 対象とする離散化手法 局所的,隣接通信中心,疎行列 有限要素法 差分法 有限体積法 Finite Element Method FEM Finite Difference Method FDM Finite Volume Method FVM 境界要素法 個別要素法 Boundary Element Method BEM Discrete Element Method DEM 20111011 12 User’s Program ppOpen-APPL FEM FDMii FVM BEM ppOpen-MATH MG ii GRAPH VIS MP ppOpen-AT STATIC ii DYNAMIC ppOpen-SYS COMM ii FT ppOpen-HPC Optimized Application with Optimized ppOpen-APPL, ppOpen-MATH DEM 20111011 13 ppOpen-HPC:特徴,新規性 • 汎用性・可搬性,使いやすさと高効率の両立 – 科学技術アプリの最適化→個別対応:限界がある • 離散化手法による分類,対象の絞り込み – それぞれの手法に応じた最適化 • データ構造の特徴を最大限利用 • 離散化手法による最適化アプローチの相違(例:疎行列) • 自動チューニング:ppOpen-AT – メモリアクセス最適化,Host Processor~Co-Processors負荷分散 – 新しいアーキテクチャ,計算機環境への柔軟な対応 – アプリケーション開発者だけでなくライブラリ開発者の負担も大 きく軽減できる,オープンソースアプリケーション(例: OpenFOAM)もターゲット,他プロジェクトとの連携も容易 • 関連研究(Sphere,OpenMM,HMC) 20111011 • ppOpen-HPCとは • スケジュール • H23実施状況と見通し 14 20111011 ppOpen-APPL FEM,FDM,FVM, BEM,DEM ppOpen-MATH MG, VIS, GRAPH H23年度 H24年度 H25年度 H26年度 H27年度 基本設計・プロトタイプ 整備・検証 改良 基本設計・プロトタイプ 整備・検証 改良 ppOpen-MATH MP 基本設計・プロトタイプ 整備・検証 改良 ppOpen-SYS COMM, FT 基本設計・プロトタイプ 整備・検証 改良 ppOpen-AT STATIC 基本設計・プロトタイプ 整備・検証 改良 ppOpen-AT DYNAMIC 基本設計・ プロトタイプ 整備・検証 成果物公開 国際シンポジウム 東大・ 「京」 1PFLOPS機 運用開始 運用開始 試験環境 導入 東大・ ターゲットシス テム運用開始 改良 15 20111011 第 1 回 H24秋 第 2 回 H25秋 第 3 回 H26秋 第 4 回 H27秋 マイルストーン=使えるソフトウェアの公開 公開内容 趣旨,目標 ターゲットマシン ppOpen-APPL プ ロ ppOpen-APPL , ppOpen-AT 東大T2K トタイプ(適応格 が様々なマルチコアクラス 東大次期システム 子・動的負荷分散 タ,GPUクラスタで稼働す 京コンピュータ を除く),領域分 る こ と を 検 証 す る 。 大 学 GPUクラスタ 割ユーティリティ, (学部,大学院)講義への ppOpen導入,講習会開催を継続的 MATH/VIS・ に実施する。 ppOpen-AT/STATIC プロトタイプ ppOpen-HPC ppOpen-HPC の 各 機 能 東大次期システム ( ppOpen-AT / (ppOpen-AT/DYNAMICを 京コンピュータ DYNAMIC を 除 除く)をこの時期までに一 GPUクラスタ く) 通り完成する。実アプリ ケーションへ適用すること により更なる改良を図る。 ポストペタスケー ターゲットとするポストペ 東大ppシステム ス シ ス テ ム 向 け タスケールシステム向けの ppOpen-HPCプロト ppOpen-HPCをマシン稼働開 タイプ 始と同時に利用可能とする。 ポストペタスケー 第 3 回 で 公 開 し た ppOpen- 東大ppシステム ス シ ス テ ム 向 け HPCを実アプリケーション ppOpen-HPC完成版 へ適用することにより,更 に改良,最適化した最終 バージョンを公開する。 16 開発環境 東大T2K 東大次期システム GPUクラスタ(東 大) 可 能 で あ れ ば 「京コンピュー タ」 東大次期システム GPUクラスタ(東 大) 京コンピュータ 東大次期システム 小型メニーコアク ラスタ 京コンピュータ 東大ppシステム 東大次期システム 小型メニーコアク ラスタ 京コンピュータ 20111011 ターゲットマシン’s • 東大T2K – 平成20年6月より稼働,ピーク性能140TFLOPS • GPUクラスタ(東大) – 平成23年4月に東大ITCに導入されるGPUクラスタ,NVIDIA Tesla M2050 32台搭載 • 東大次期システム – 平成24年4月に東大ITCに導入されるスーパーコンピュータ, ピーク性能1PFLOS級 • 小型メニーコアクラスタ – 平成25年度前半に東大ITCに導入されるメニーコアクラスタ,本 研究の予算で導入 • 東大ppシステム – 本研究のターゲットマシン,平成26年度に東大ITCに導入,ピー ク性能 数十PFLOPS,pp:post-peta-scale 17 20111011 18 平成23年度 • 本研究のマイルストーンは,ターゲットとするスーパーコ ンピュータの導入スケジュールを考慮し,前ページの表 のように設定されており,オープンソースソフトウェアの 公開を研究期間中に4回実施する予定である。 • 平成23年度は,まず平成24年秋(9月初旬を予定)の第1 回公開を目指した研究開発を実施する。 – 第1回公開では,ppOpen-APPL,ppOpen-ATが様々なマルチコ ア,GPU環境で稼働することを検証するための最低限の機能を 満足する機能を公開。 20111011 19 第1回公開 H24秋 • ppOpen-APPLプロトタイプ(マルチコアクラスタ向け) – – – – データ入出力部,領域間通信 簡易的な領域分割ユーティリティ 係数マトリクス生成,陽解法ソルバー 離散化手法の特性を考慮した前処理付き反復法 • ppOpen-MATH/VISプロトタイプ – スムージングを行わない,一様差分格子を対象としたリアルタ イム可視化処理ライブラリのプロトタイプ • ppOpen-AT/STATICプロトタイプ – FDM,FEM,FVM,BEM,DEMの1CPU用サンプルプログラムを 対象 – マルチコアCPU,GPU,マルチコアCPU-GPUヘテロジニアス環 境向けの自動チューニングコンパイラのプロトタイプ 20111011 20 H23実施項目:ppOpen-APPL • 各離散化手法における必要データ,内容,格納形式等 について整理,検討 • 共通入出力インタフェースの設計 • その結果に基づき,ppOpen-APPLプロトタイプの各機能 の研究,開発,実装を行う。 • マルチコアクラスタで稼働するようなライブラリ群の研究 開発を実施 – ppOpen-MATH/VISも同様 20111011 21 H23実施項目:ppOpen-AT/STATIC • ppOpen-APPLのサポートする各手法の1CPU用サンプル プログラムを対象として,疎行列解法,係数マトリクス生 成部,陽解法ソルバー等に特に着目して,ソースプログ ラムへのディレクティヴの挿入により,以下を実現するよ うなプロトタイプの開発を実施する: – マルチコアCPU向けに環境,問題に応じてメモリアクセス最適 化されたプログラムの自動生成 – CUDA,OpenCLによって記述され,環境,問題に応じてメモリア クセス最適化されたGPU向けプログラムの自動生成 – マルチコアCPU-GPUヘテロジニアス環境において,環境,問 題に応じて最適な性能を発揮する資源配分決定を対象 • ppOpen-ATのためのディレクティヴについても併せて検 討を実施する。 20111011 22 H23実施項目:ppOpen-SYS • これらとは独立に,基本的な検討,プロトタイプの開発, 実装,検証をマルチコアクラスタ,GPUクラスタを使用して 実施する。 20111011 • ppOpen-HPCとは • スケジュール • H23実施状況と見通し 23 20111011 24 ppOpen-APPL (1/2) • 各手法個別の並列プログラム開発用ライブラリ群また はテンプレート – – – – – ①共通データ入出力インタフェース ②領域間通信 ③係数マトリクス生成 ④離散化手法の特性を考慮した前処理付き反復法 ⑤適応格子,動的負荷分散 20111011 25 ppOpen-APPL (2/2) • 対象分野絞り込み,各手法の特徴抽出 – FDM:非定常熱伝導,弾性動力学,自由表面付非圧縮性NS – FVM:非定常熱伝導,圧縮性/非圧縮性NS – FEM:定常/非定常熱伝導,弾塑性固体力学(静解析,動解 析:接触も考慮),非圧縮性NS – BEM:地震発生サイクル,電磁場 – DEM:粉体力学,SPHにより流体も考慮,GPU化済 • ppOpen-AT/STATICとの連携 – サンプルコード提供 – メモリアクセスパターン最適化へ向けての検討 • ライブラリ化へ向けての共通データ構造,インタフェース – netCDFベースにて検討中:専任ポスドク雇用 – H23中には基本的インタフェース決定:レガシーコードも考慮 20111011 26 ppOpen-MATH(1/2) • ppOpen-MATH/VIS – スムージングを行わない,一様差分格子を対象としたリアルタ イム可視化処理ライブラリのプロトタイプをH23中に整備 • ppOpen-MATH/MG – 計算ノード数を増やした場合のオーバーヘッド削減・・・に尽き る – 粗いレベルでの計算・通信手法の検討 • 通信量削減アルゴリズム • ノード数の減少,1ノードに集める – 現状:各MPIプロセス=メッシュ数1になった段階で1コアに集める 27 Weak Scaling: MGCG 643cells/core, up to 512 nodes(2.05×109 cells) T2K (Tokyo): 8,192 cores, Cray-XE6 (Hopper): 12,288 cores T2K (Tokyo) Cray XE6 (Hopper@LBNL) Down is good ICIAM11 28 Weak Scaling: MGCG 643cells/core, up to 512 nodes(2.05×109 cells) T2K (Tokyo): 8,192 cores, Cray-XE6 (Hopper): 12,288 cores Cray XE6 (Hopper@LBNL) 100% 100% 90% 90% 80% 80% 70% 70% 60% 60% % % T2K (Tokyo) 50% 50% 40% 40% 30% 30% CG 20% Coarse Grid 10% CG 20% Coarse Grid 10% Multigrid 0% Multigrid 0% 64 128 256 512 1024 2048 4096 6144 8192 96 core # 192 384 768 1536 3072 6144 9216 12288 core # ICIAM11 29 Weak Scaling: MGCG 643cells/core, up to 512 nodes(2.05×109 cells) T2K (Tokyo): 8,192 cores, Cray-XE6 (Hopper): 12,288 cores MPI_Isend/Irecv/Waitall,MPI_Allreduce Cray XE6 (Hopper@LBNL) 100% 100% 90% 90% 80% 80% 70% 70% 60% 60% % % T2K (Tokyo) 50% 50% 40% 40% 30% 30% 20% 20% Comm. 10% Comm. 10% Comp. Comp. 0% 0% 64 128 256 512 1024 2048 4096 6144 8192 96 core # 192 384 768 1536 3072 6144 9216 12288 core # ICIAM11 20111011 30 ppOpen-MATH(2/2) • ppOpen-MATH/MP – 大気海洋カップリングライブラリ開発をまず開発し,そこから一 般的なカプラーを整備 • • • • 大気: NICAM(非構造格子),MIROC(構造格子) 海洋: COCO(構造格子) 二次元(面対面)から三次元へ 本年度中に低解像度モデルを連成 – netCDFによるデータのやりとり – H24以降 • 実行環境としての整備 – I/O,可視化,FT,M×N • 他手法への展開 • 適切な連成アプリケーションの設定 – 津波破壊 – MHDプラズマ:格子+粒子 提供:阪口秀博士(JAMSTEC) 正20面体格子(NICAM) 緯度経度格子(MIROC-A) NICAM-Agrid NICAM-ZMgrid HICAM-ZMgrid MIROC-A 大気モデル1 J-cup 次世代カプラー 大気モデル2 •格子変換 •マルチアンサンブル •IO •Pre- and post-process •Fault tolerance •M×N 海洋モデル ポストペタ計算機 システム -システムソフト -アーキテクチャ COCO 領域COCO 松村モデル Tri-Polar格子(COCO) 海洋領域モデル 非静力モデル 20111011 32 ppOpen-AT/STATIC • 自動チューニング(AT)コンパイラ:Directive Base – – – – 最適化ライブラリ群,アプリケーションを自動生成 OpenFOAM等オープンソースアプリも対象 Hybrid,CUDA,OpenCL メモリアクセス最適化に主眼 • ブロック化,アンローリング – CPU~GPU負荷分散 – 基本的にはインストール時にパラメータ最適化,データベース 生成 • 各手法に適用中 – 例1:BEMにおける密行列ベクトル積(反復解法におけるボトル ネック,Memory Bound)(ppOpen-AT/STATICの適用例) – 例2:三次元有限要素法(予備的検討) 問題の詳細 境界要素法(Boundary Element Method, BEM)を利用 静電場の問題(Static Electric Filed Analysis) ◦ 地上から50cmのところに半径25cmの金属球を 配置し、金属球に+1Vの電位を与えたとき に金属球表面に誘起される電荷を求める ◦ 空間内の電場、ポテンシャル(電位)の値が 分かる 33 Performance Evaluation BEM (Boundary Element Method) Main kernel is a dense matrix-vector multiplication. Using BiCGStab method without preconditioner for its iterative solver. Problem Sizes ◦ Small : 600 x 600 ◦ Medium : 2400 x 2400 ◦ Medium-Large: 15000 x 15000 ◦ Large : 21600 x 21600 34 Example of The Output Number of nodes=304 Number of faces=600 Linear system was generated. Original relative residual norm = 1.00000000000000e+00 Step 1 relative residual norm = 5.35603994270705e-03 Step 2 relative residual norm = 5.41190843151683e-04 Step 3 relative residual norm = 2.72761060075071e-04 Step 4 relative residual norm = 5.41853759554182e-05 Step 5 relative residual norm = 5.91431206100390e-06 Step 6 relative residual norm = 3.32336208506132e-06 Step 7 relative residual norm = 9.70938119115919e-07 Step 8 relative residual norm = 7.48618319505291e-07 Step 9 relative residual norm = 5.35404930273272e-08 Step 10 relative residual norm = 1.18265378049636e-08 Step 11 relative residual norm = 8.67804885368647e-09 Relative residual norm = 8.67804896812290e-09 Time for solving liner equations : 0.149939 OK 35 ppOpen-AT Adaptation: BEM Code A dense matrix-vector multiplication is used in BiCGStab iteration. The following is main kernel with ppOpenAT description. #pragma oat install unroll (row, col) region start #pragma oat name MyMatVec #pragma oat varied (row, col) from 1 to 4 for (row=0; row < dim; row++){ for (col=0; col < dim; col++){ q[row] = q[row] + mat[row][col] * p[col]; } } #pragma oat install unroll (row, col) region end 36 Results: BEM Code (Opteron) T2K Open Supercomputer 1 Core (AMD Opteron Quad core (Barcelona), 2.3GHz) HITACHI C compiler Option: -O4 –noparallel Whole time for part of linear equation solver Size Auto-tuned Speedup Code[Second] Small Original Code [Second] 0.0723 0.0327 2.21x Medium 1.643 0.801 2.05x Large 247 112 2.20x 37 Auto-tuning log : BEM Code (Opteron) Time of The Mat-Vec Kernels Time in second 0.0025 0.002 0.0015 0.001 0.0005 (MyMatVec (ppOpenAT_NUMPROCS 1) (ppOpenAT_SAMPDIST 100) (ppOpenAT_PROBSIZE 100 (MyMatVec_I 11) ) (ppOpenAT_PROBSIZE 200 (MyMatVec_I 16) ) (ppOpenAT_PROBSIZE 300 (MyMatVec_I 11) ) (ppOpenAT_PROBSIZE 400 (MyMatVec_I 11) ) (ppOpenAT_PROBSIZE 500 (MyMatVec_I 16) ) (ppOpenAT_PROBSIZE 600 (MyMatVec_I 16) ) N=600 0.0022 0.0016 0.0015 0.0015 0.0014 0.0011 0.0012 0.0010 0.0011 0.0010 0.0010 0.0009 0.0009 0.0009 0.0009 0.0008 0 8 9 10 11 7 Parameter 1 2 3 4 5 6iusw: SW12 13 14 15 16 Best: iusw=16 : Unroll (row, col) = (4, 4) ) 38 Auto-tuning log : BEM Code (Nehalem) (MyMatMul (ABCLib_NUMPROCS 1) Time of The Mat-Vec Kernels Time in second N=600 (ABCLib_SAMPDIST 100) (ABCLib_PROBSIZE 100 1 (MyMatVec_I 16) 0.9 0.8599 ) 0.8 (ABCLib_PROBSIZE 200 0.7099 0.7 (MyMatVec_I 16) 0.6289 ) 0.6 0.5509 (ABCLib_PROBSIZE 300 0.4589 0.5 0.4469 0.4069 (MyMatVec_I 16) 0.4 0.3829 0.3759 ) 0.3559 0.3429 0.3 (ABCLib_PROBSIZE 400 0.3419 0.3569 0.3639 (MyMatVec_I 16) 0.2 0.3300 0.3299 ) 0.1 (ABCLib_PROBSIZE 500 0 (MyMatVec_I 16) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ) iusw: Parameter SW (ABCLib_PROBSIZE 600 (MyMatVec_I 16) ) ) Execution time in 1000 times Best: iusw=16 : Unroll (row, col) = (4, 4) 39 ppOpen-AT Adaptation: BEM Code CPU version OpenMP Parallelization + Unrolling One Dimensional Implementation #pragma oat install unroll (row, col) region start #pragma oat name MyMatVec #pragma oat varied (row, col) from 1 to 4 #pragma omp parallel for private(col) for (row=0; row < dim; row++){ tmp = 0.0; for (col=0; col < dim; col++){ tmp = tmp + mat[row*dim+col] * p[col]; } q[row] = tmp; } #pragma oat install unroll (row, col) region end 40 ppOpen-AT Adaptation: BEM Code CPU + GPU kernel selection #pragma oat select region start #pragma oat name SelectGPU #pragma oat select sub region start pbicgstab(dim, a, rhs, sol, tor, max_steps); #pragma oat select sub region end #pragma oat select sub region start pbicgstab_gpu(dim,a, rhs, sol, tor, max_steps); #pragma oat select sub region end #pragma oat select region end 41 BEM : GPU code with PGI accelerator #pragma acc data region copyin (mat[0:dim-1][0:dim-1], shdw[dim] ) { /* BiCGSTAB iteration */ for (step=1;step<=max_steps; step++) { #pragma acc region { for (row=0; row < dim; row++){ ap[row] = 0.0; } for (row=0; row < dim; row++){ for (col=0; col < dim; col++){ ap[row] = ap[row] + mat[row][col] * p[col]; } } for(i=0;i<dim;i++){p[i] = r[i] + beta * ( p[i] - zeta * ap[i] );} /* No preconditioning */ for (i=0;i<dim;i++){kp[i]=p[i];} for (row=0; row < dim; row++){ akp[row] = 0.0; } for (row=0; row < dim; row++){ for (col=0; col < dim; col++){ akp[row] = akp[row] + mat[row][col] * kp[col]; } } } //************ end of acc region nom = dot_product(dim, shdw, r); den = dot_product(dim, shdw, akp); alpha = nom / den; nomold = nom; #pragma acc region { for(i=0;i<dim;i++){t[i] = r[i] - alpha * akp[i];} /* No preconditioning */ for (i=0;i<dim;i++){kt[i]=t[i];} for (row=0; row < dim; row++){ akt[row] = 0.0; } for (row=0; row < dim; row++){ for (col=0; col < dim; col++){ akt[row] = akt[row] + mat[row][col] * kt[col]; } } } //************ end of acc region nom = dot_product(dim, akt, t); den = dot_product(dim, akt, akt); zeta = nom / den; for(i=0;i<dim;i++){sol[i] = sol[i] + alpha * kp[i] + zeta * kt[i];} for(i=0;i<dim;i++){r[i] = t[i] - zeta * akt[i];} beta = alpha / zeta * dot_product(dim, shdw, r) / nomold; rnorm = sqrt( dot_product(dim, r, r) ); if (rnorm/bnorm < tor){break;} } //********* end of data acc region } /*********************************/ /* Confirmation of residual */ residual_direct(dim, mat, sol, rhs, r); rnorm = sqrt( dot_product(dim, r, r) ); } 42 Results: BEM Code (Nehalem+C2050) Nehalem + C2050 CPU: OpenMP Parallel Threads Execution for CPU ◦ #Threads: 8, One dimensional Optimization for Mat-Vec GPU: Optimized with PGI Accelerator PGI Compiler ◦ -Msafeptr=all -fastsse -lm -mp -ta=nvidia -Mlist -Minfo=accel,mp Whole time for part of linear equation solver Size CPU Code [Second] GPU Code [Second] Speedup Small 0.002 0.022 0.09x Medium 0.128 0.125 1.02x Medium-Large 7.96 6.99 1.13x Large Out of Memory - - 43 Example of FEM FEM code for 3D Solid Mechanics My program is based on existing FEM application for CPU Optimization is applied for CPU Z 3x3 blocked Diagonal/Lower/Upper data are stored in each individual array Force CPU:Nehalem 2.67GHz based on GeoFEM (http://geofem.tokyo.rist.or.jp/) C language, CRS(CSR) format 42.7GF, 32GB/s GPU: Tesla C2050 515GF, 144GB/s Y X Target for Optimization • Sparse Linear Solver (Preconditioned Iterative Solver) • Matrix Assembling 201109 45 Performance of SpMV for FEM Computation [Ohshima et al., 2011] • GeoFEM Benchmark • CPU: Nehalem 2.67GHz (quad-core) Z – 42.7GFLOPS, 32GB/s – 3.5 GFLOPS with 4xOpenMP Threads • GPU: Tesla C2050 – 515GFLOPS, 144GB/s – 11.4 GFLOPS with 240 Threads • Optimized implementation based on cusp X Y • GPU is 3.25x is faster than CPU • (GPU+CPU) is 30% faster than GPU only !! 201109 46 Parallel Matrix Assembling by Coloring Parallel calculation with coloring: multi-color method 1. 2. mark the elements which can be calculated at same time as "same color" (coloring) parallel calculation in each color (calculation) 47 Matrix Assembling 106 elements, 8 colors • CPU: 4.73 sec. • GPU: 1.28 sec. (x 3.46) 201109 48 20111011 49 疎行列ソルバーによるアプリケーション • CPU~GPUの性能差が現状ではそれほど大きくない(1ソ ケット) – 両者を利用することが効率的 – 適切な負荷分散,CPU~GPU間の通信削減 • Multicore~Manycore(e.g. MIC) • 差分法 – 構造格子,データパターンが予測可能 • 有限要素法,有限体積法 – 非構造格子 – データによって最適な解が異なる可能性 – 実行時の試行はある程度必要となる可能性:最小限にしたい 20111011 50 その他 • ppOpen-MATH/GRAPH – スケーラブルなグラフ分割アルゴリズム • ppOpen-SYS/COMM – – – – ppOpen-HPCで使われるアプリに限定した通信ライブラリ MPIと同じインタフェース ホストCPUのメモリを経由しない通信 MIC内のプログラミングモデル • スレッドonly,スレッド+メッセージパッシング • ppOpen-SYS/FT – リスタートファイルの効率的IO 20111011 51 状 況 • H24-9月の公開に向けて順調な進捗 • 非構造格子向けのppOpen-ATの戦略がカギ • H23年度中に予定していた国際ワークショップは延期 – 2012年10月以降 – 若手中心 • 企画,運営 • 招待講演者 – 各チームからもご協力(講演等)をお願いしたい
© Copyright 2025 ExpyDoc