応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング

Slides:



Advertisements
Similar presentations
HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Advertisements

Level-3 BLASに基づく特異値分解 アルゴリズムのSMP上での性能
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
キャッシュ付PRAM上の 並列クィックソートと 並列マージソート
クラスタの構成技術と クラスタによる並列処理
Chapter11-4(前半) 加藤健.
タスクスケジューリング    .
C言語 配列 2016年 吉田研究室.
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
クラスタコンピューティングの 並列環境と性能
AllReduce アルゴリズムによる QR 分解の精度について
C言語 配列 2016年 吉田研究室.
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
小型デバイスからのデータアクセス 情報処理系論 第5回.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
IT入門B2 ー 連立一次方程式 ー.
PCクラスタ上での 連立一次方程式の解の精度保証
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
OSI7層の各層の1)名称 2)機能の簡単な説明 3)各階層に関連のあ る機器、規格などを5つ以上書いて下さい。
ネットワーク性能に合わせた 分散遺伝的アルゴリズムにおける 最適な移住についての検討
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第5回 計算理工学専攻 張研究室 山本有作.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
Occam言語による マルチプリエンプティブシステムの 実装と検証
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
MPIによるwavからmp3圧縮の検証 情報論理工学研究室 04‐1‐47‐200 木村 惇一.
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第6回 計算理工学専攻 張研究室 山本有作.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
応用数理工学特論 第9回 高速フーリエ変換の高性能化手法
プロセス間データ通信  齋藤グループ 小林 直樹
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
応用数理工学特論 第9回 高速フーリエ変換とその並列化
関数の定義.
MPIとOpenMPを用いた Nクイーン問題の並列化
近況: Phoenixモデル上の データ並列プログラム
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
プログラミング演習I 行列計算と線形方程式の求解
LU分解を用いた連立一次方程式.
巡回冗長検査CRC32の ハード/ソフト最適分割の検討
通信機構合わせた最適化をおこなう並列化ンパイラ
MPIを使った加算  齋藤グループ 小林直樹
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
プログラミング 3 2 次元配列.
「マイグレーションを支援する分散集合オブジェクト」
アルゴリズムとプログラミング (Algorithms and Programming)
社会の情報インフラストラクチャとして、高性能コンピュータおよびネットワークの重要性はますます増大しています。本研究室では、コンピュータおよびネットワークの高速化を狙いとする並列・分散情報処理の科学と技術に関する研究に取り組んでいます。効率のよいシステムの実現を目指して、下記の項目を追求しています。 ◇コンピュータアーキテクチャ.
「マイグレーションを支援する分散集合オブジェクト」
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
BSPモデルを用いた 並列計算の有用性の検証
理工学部情報学科 情報論理工学研究室 延山 周平
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
密行列固有値解法の最近の発展 (I) - Multiple Relatively Robust Representation アルゴリズム - 2004年11月26日 名古屋大学 計算理工学専攻 山本有作 日立製作所の山本有作です。 「~」について発表いたします。
キャッシュマシン向け三重対角化 アルゴリズムの性能予測方式
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
分散メモリ型並列計算機上での行列演算の並列化
プログラミング演習II 2003年12月10日(第7回) 木村巌.
2008年 7月17日 応用数理工学特論 期末発表 鈴木綾華,程飛
Presentation transcript:

応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング 応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング 第3回 計算理工学専攻 張研究室 山本有作 日立製作所の山本有作です。 「~」について発表いたします。

前回の概要 「並列計算機による高性能計算」 1. 並列計算機の種類と特徴 2. 共有メモリ型並列計算機 プログラミングモデル 高性能化の技法 1. 並列計算機の種類と特徴 2. 共有メモリ型並列計算機 プログラミングモデル 高性能化の技法 本発表では,はじめに,研究の背景を述べてから,スパースソルバの概要,並列化手法,そして本研究で工夫した点の一つであるRISCプロセッサ向けの最適化についてご説明します。最後に,並列計算機SR2201上での性能評価とまとめを述べます。

今回の概要 「並列計算機による高性能計算」 3. 分散メモリ型並列計算機 「連立一次方程式の高性能解法 (密行列の場合)」 1. LU分解 3. 分散メモリ型並列計算機 プログラミングモデル 高性能化の技法 「連立一次方程式の高性能解法 (密行列の場合)」 1. LU分解 2. LU分解のブロック化 3. LU分解の並列化 本発表では,はじめに,研究の背景を述べてから,スパースソルバの概要,並列化手法,そして本研究で工夫した点の一つであるRISCプロセッサ向けの最適化についてご説明します。最後に,並列計算機SR2201上での性能評価とまとめを述べます。

3.1 分散メモリ型並列計算機のプログラミング 通信ライブラリMPI MPIのプログラミングモデル MPIの関数 行列乗算の例

通信ライブラリMPI MPI(Message Passing Interface) MPIの機能 プロセッサ間通信を行うためのサブルーチンの集合 MPIの機能 1対1通信 ブロードキャスト 総和演算・最大値 その他

MPIのプログラミングモデル SPMD(Single Program Multiple Data) 分散メモリ 全プロセッサが共通のプログラムを実行 処理するデータはプロセッサ毎に異なる。 各プロセッサは固有の番号(0, 1, … , p-1)を持ち,プログラム中で自分の番号を参照して処理を行う。 分散メモリ 各プロセッサは自分の持つローカルメモリのみをアクセス可能 他プロセッサのメモリ上にあるデータが必要な場合は,プロセッサ間通信により取得

MPIの関数 起動/終了 環境情報の取得 1対1の送受信 集団通信 MPI_INIT : MPIの初期化 MPI_FINALIZE : MPIの終了 環境情報の取得 MPI_COMM_SIZE : 全プロセッサ台数の取得 MPI_COMM_RANK : プロセッサ番号の取得 1対1の送受信 MPI_SEND : データの送信 MPI_RECV : データの受信 集団通信 MPI_BCAST : データのブロードキャスト MPI_REDUCE : リダクション演算(総和/最大値など)

行列乗算の例 (1) × = 問題 PU0 PU3 PU0 PU1 PU2 PU3 N×N 行列 A,B に対し,P 台のプロセッサを使って C = AB を計算 A はブロック行分割,B はブロック列分割されているとする。 結果の C はブロック列分割の形で求めるとする。 各プロセッサは,行列の一部のみを持つ (分散メモリ)。 また,自分の持つ部分のみにアクセスできる。 PU0 PU3 PU0 A0 PU1 A1 × B0 B1 B2 B3 = C0 C1 C2 C3 PU2 A2 PU3 A3

行列乗算の例 (2) 計算の方針 各 CJ を縦方向に P 個のブロック C0J, C1J, …, CP-1,J に分ける。 まず,自分の持つ部分行列のみで計算できる CJJ を計算 その後,他のプロセッサからデータをもらいながら, 他の CIJ を計算 program matmult (配列の確保: AJ,BJ,CJ ,ATMP) (MPIの初期化と環境情報取得。自分のプロセッサ番号をJとする。) (配列AJ,BJの初期化) CJJ = AJ×BJ do I = 1, P-1 (プロセッサ MOD(J-I+P,P)にAJを送る。) (プロセッサ MOD(J+I,P)からAMOD(J+I,P)を受け取り,ATMPに格納。)  CMOD(J+I,P),J = ATMP×BJ end do (配列CJの出力) (MPIの終了) stop end

3.2 高性能化の技法 基本的な考え方 実行時間の予測 行列乗算の例

基本的な考え方 PU間の負荷分散均等化 PU間通信量の削減 PU間通信回数の削減 キャッシュメモリの有効利用 各PUの処理量が均等になるよう   処理を分割 PU間通信量の削減 通信には,データ1個あたり数十サイクルの時間が必要 データ分割の最適化による通信量の削減と通信の隠蔽が重要 PU間通信回数の削減 1回の通信には通常,数百~数千サイクルの起動時間が必要 並列粒度の増大による通信回数の削減が重要 キャッシュメモリの有効利用 キャッシュ PU0 PU1 PU2 PU3 メモリ ネットワーク 並列粒度とは,PU間での同期なしに行える処理の大きさ。

実行時間の予測 演算時間 通信時間 待ち時間 全実行時間 Tcomp = (演算量)/(演算速度) もっとも単純なモデル化 より精密には,キャッシュの影響などを考慮する必要あり 通信時間 Tcomm = (転送回数)×(起動時間) + (転送量)/(転送速度) 待ち時間 Tidle 全実行時間 Texec = Tcomp + Tcomm + Tidle

行列乗算の例 × = アルゴリズム 実行時間の予測 PU0 PU3 PU0 PU1 PU2 PU3 P を増やすと,並列化効率が大きく低下 A,C をブロック行分割,B をブロック列分割とした行列乗算 実行時間の予測 Tcomp = 2N3 / P / s :P に反比例して減少 Tcomm = (P – 1 ) * (Tsetup + (N / P) * N * 8 / b) = (P – 1 ) * Tsetup + 8 (1 – 1 / P) N2 / b) :P とともに減少しない Tidle = 0 :負荷は完全に均等 PU0 PU3 PU0 A0 PU1 A1 × B0 B1 B2 B3 = C0 C1 C2 C3 PU2 A2 PU3 A3 P を増やすと,並列化効率が大きく低下

通信の隠蔽 アイディア 行列 A のデータを,計算に必要な1ステップ前に送ってもらう。 演算とのオーバーラップにより,通信時間を隠蔽できる。 ただし,通信時間 ≦ 演算時間 でないと,隠蔽は不可能 program matmult (配列の確保: AJ,BJ,CJ ,ATMP) (MPIの初期化と環境情報取得。自分のプロセッサ番号をJとする。) (配列AJ,BJの初期化) (プロセッサ MOD(J-1+P,P)にAJを送る。) CJJ = AJ×BJ do I = 1, P-1 (プロセッサ MOD(J+I,P)からAMOD(J+I,P)を受け取り,ATMPに格納。) IF (I < P-1) (プロセッサ MOD(J-I+1+P,P)にAJを送る。)  CMOD(J+I,P),J = ATMP×BJ end do (配列CJの出力) (MPIの終了) stop end

Fox のアルゴリズム (1) × = × = アルゴリズム A B C プロセッサを2次元に並べ,A,B,C を縦横両方向にブロック分割 プロセッサ (I,J) は,第 K ステップで      CIJ += A I, MOD(I+K-1,√P) B MOD(I+K-1,√P), J  を計算 AII の横方向 ブロードキャスト B0 B1 B2 B3 B0 B1 B2 B3 × = A B C CIJ += A II,B IJ の計算 B0 B1 B2 B3 B0 B1 B2 B3 × =

Fox のアルゴリズム (2) × = × = × = 第2ステップ A B C AI,I+1 の横方向 ブロードキャスト BIJ の縦方向 サイクリック転送 B0 B1 B2 B3 B0 B1 B2 B3 × = A B C CIJ += A I,I+1,B I+1,J の計算 B0 B1 B2 B3 B0 B1 B2 B3 × =

Fox のアルゴリズム (3) アルゴリズム program matmult (配列の確保: AIJ,BIJ,CIJ ,ATMP, BTMP) (MPIの初期化と環境情報取得。自分のプロセッサ番号を(I,J)とする。) (配列AIJ,BIJの初期化) do K = 1, √P   IF (J = MOD(I+K,√P)) (配列AIJをATMPにコピー)   配列ATMPを行方向のプロセッサ間でブロードキャスト   IF (K > 1) THEN     (プロセッサ (MOD(I-1+P,P),J)にBTMPを送る。)     (プロセッサ (MOD(I+1,P)からBTMPを受け取る。)   ELSE     (BIJを配列BTMPにコピー) END IF  CIJ += ATMP×BTMP end do (配列CIJの出力) (MPIの終了) stop end

Fox のアルゴリズムの MPI による実装 × = × = ATMP の横方向ブロードキャスト BTMP の縦方向サイクリック転送 同じ I の値を持つ PU 群に対してコミュニケータ(PUのグループ)を定義 コミュニケータを用い,MPI_BCAST によりブロードキャスト BTMP の縦方向サイクリック転送 MPI_SEND を用いて1つ上の PU にデータを送信 MPI_RECV を用いて1つ下の PU からデータを受信 × = B0 B1 B2 B3 B0 B1 B2 B3 × =

Fox のアルゴリズムの性能モデル 実行時間の予測 P を増やすと,通信時間も 1/√P で減少 Tcomp = 2N3 / P :P に反比例して減少 Tcomm = √P * log2(√P) * (Tsetup + N2 / P * 8 / b) :ATMP の転送 + (√P – 1 ) * (Tsetup + N2 / P * 8 / b) :BTMP の転送 Tidle = 0 :負荷は完全に均等 P を増やすと,通信時間も 1/√P で減少 P を増やしたときの並列化効率の低下が小さい。

より効率的な行列乗算 通信の隠蔽 より効率的なアルゴリズムの利用 ATMP の転送を,計算の1ステップ前に行う。 通信用バッファがもう1個必要 ノンブロッキング通信(MPI_ISEND,MPI_IRECV)を使うと,より効果的 より効率的なアルゴリズムの利用 SUMMA (Scalable Universal Matrix Multiplication) LAPACK Working Notes 96 http://www.netlib.org/lapack/lawns/downloads/

連立一次方程式の高性能解法 (密行列の場合) 連立一次方程式の高性能解法 (密行列の場合) 1. LU分解 2. LU分解のブロック化 3. LU分解の並列化 本発表では,はじめに,研究の背景を述べてから,スパースソルバの概要,並列化手法,そして本研究で工夫した点の一つであるRISCプロセッサ向けの最適化についてご説明します。最後に,並列計算機SR2201上での性能評価とまとめを述べます。

ガウスの消去法の性能 n=1000のときの性能は250MFLOPS程度