Level-3 BLASに基づく二重対角化 アルゴリズムとその性能評価

Slides:



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

大規模な三角 Toeplitz 線形方 程式の高速解法とその応用 ○ 安村 修一(法政大学 4 年) 李 磊(法政大学) 日本応用数理学会「行列・固有値の解法とその応用」研究部会 第6回研究会.
Level-3 BLASに基づく特異値分解 アルゴリズムのSMP上での性能
特異値分解とその応用 2009年5月12日 計算理工学専攻 張研究室 山本有作.
到着時刻と燃料消費量を同時に最適化する船速・航路計画
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
※ 対称密行列の固有値分解は特異値分解と共通点が多い
Intel AVX命令を用いた並列FFTの実現と評価
Fill-in LevelつきIC分解による 前処理について
一般化Bi-CGSTAB(s, L) (=一般化IDR(s, L))
A Q R QR分解とは? → × ◆QR分解 QTQ = I (単位行列) ◆応用例 ◆主な計算方法 n m 今回はこの方法に注目
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
第11回 整列 ~ シェルソート,クイックソート ~
全体ミーティング (4/25) 村田雅之.
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
望遠鏡制御関係現状報告 ナノオプトニクス・エナジー ナノオプトニクス研究所 下農 淳司.
対角マトリックスを用いた3次元剛塑性有限要素法の並列計算 対角マトリックスを用いた剛塑性有限要素法
AllReduce アルゴリズムによる QR 分解の精度について
時空間データからのオブジェクトベース知識発見
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
2. 共有メモリ型並列計算機での特異値分解の高速化
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
IT入門B2 ー 連立一次方程式 ー.
データ構造とアルゴリズム 分割統治 ~ マージソート~.
      線形写像  線形写像 U,V:R上のベクトル空間 T:UからVへの写像 (1)T(u+v)=T(u)+T(v)  (u,v∈U),
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
最短路問題のための LMS(Levelwise Mesh Sparsification)
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第5回 計算理工学専攻 張研究室 山本有作.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
シミュレーション演習 G. 総合演習 (Mathematica演習) システム創成情報工学科
正方行列向け特異値分解の CUDAによる高速化
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
非対称行列向けマルチシフトQR法の 性能予測方式
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第6回 計算理工学専攻 張研究室 山本有作.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
AMR法フレームワークの様々なアーキテクチャへ向けた発展 研究背景と研究目的 Xeon Phi対応に向けた拡張
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
「R入門」  5.7 行列に対する諸機能  10月23日 (木) 発表者 大城亜里沙.
知能システム論I(13) 行列の演算と応用(Matrix) 2008.7.8.
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
パターン認識特論 担当:和田 俊和 部屋 A513 主成分分析
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
目的:高速QR分解ルーチンのGPUクラスタ実装
資料 線型変換のイメージ 固有値、固有ベクトル 平賀譲(209研究室) 資料
秘匿リストマッチングプロトコルとその応用
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
行列 一次変換,とくに直交変換.
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
密行列固有値解法の最近の発展 (I) - Multiple Relatively Robust Representation アルゴリズム - 2004年11月26日 名古屋大学 計算理工学専攻 山本有作 日立製作所の山本有作です。 「~」について発表いたします。
キャッシュマシン向け三重対角化 アルゴリズムの性能予測方式
長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化
密行列固有値解法の最近の発展(II) ー マルチシフトQR法 ー
目次 はじめに 収束性理論解析 数値実験 まとめ 特異値計算のための dqds 法 シフトによる収束の加速
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
分散メモリ型並列計算機上での行列演算の並列化
2008年 7月17日 応用数理工学特論 期末発表 鈴木綾華,程飛
Presentation transcript:

Level-3 BLASに基づく二重対角化 アルゴリズムとその性能評価 名古屋大学 計算理工学専攻 山本有作 2006年1月5日-7日 第3回計算数学研究会 日立製作所の山本有作です。 「~」について発表いたします。

目次 1. はじめに 2. 従来の二重対角化アルゴリズム 3. Level-3 BLAS に基づく二重対角化アルゴリズム 4. 性能評価 1. はじめに 2. 従来の二重対角化アルゴリズム 3. Level-3 BLAS に基づく二重対角化アルゴリズム 4. 性能評価 5. 特異ベクトルの計算手法 6. まとめと今後の課題 本発表では,はじめに,研究の背景を述べてから,スパースソルバの概要,並列化手法,そして本研究で工夫した点の一つであるRISCプロセッサ向けの最適化についてご説明します。最後に,並列計算機SR2201上での性能評価とまとめを述べます。

1. はじめに 本研究で対象とする問題 応用分野 実正方行列 A の下二重対角行列への変換 B = U0TAV0 A : n×n 密行列 1. はじめに 本研究で対象とする問題 実正方行列 A の下二重対角行列への変換 B = U0TAV0 A : n×n 密行列 B : n×n 下二重対角行列 U0,V0 : n×n 直交行列 応用分野 行列 A の特異値分解に対する前処理 画像処理の分野では,n = 10,000 以上の大規模行列に対する特異値分解の需要あり 必要な特異ベクトルは数本程度の場合が多い 前処理を数分程度で行えることが望ましい ここでは特に,Aが実対称またはエルミートの密行列の場合を考える。

特異値分解の流れ 密行列 A 計算内容 計算手法 U0TAV0 = B (U0, V0: 直交行列) ハウスホルダー法 二重対角化 QR法 分割統治法 MR3アルゴリズム I-SVDアルゴリズム 二重対角行列の 特異値・特異ベクトル計算 Bvi =σi xi BTxi =σi yi Bの特異値 {σi },   特異ベクトル {xi }{yi } 密行列Aをまず三重対角行列Tに相似変換してからTの固有値・固有ベクトルを求めるのが最も一般的な計算法。 三重対角化には,後に述べるハウスホルダー法を使う場合がほとんど。 三重対角行列の固有値・固有ベクトルの計算には,色々なアルゴリズムがある。 vi = V0 yi ui = U0 xi 逆変換 逆変換 Aの特異ベクトル {ui }, {vi }

各部分の演算量 m 組の特異値・特異ベクトルを求める場合の演算量 二重対角化: (8/3) n3 特異値の計算: O(mn) ~ O(n2) 特異ベクトルの計算: O(mn) ~ O(m2n) 逆変換: O(mn2) m ≪ n の場合は演算量の大部分を二重対角化が占める。 ハウスホルダー法の高速化が必要

2. 従来の二重対角化アルゴリズム ハウスホルダー法による二重対角化 第 k ステップでの処理 2. 従来の二重対角化アルゴリズム ハウスホルダー法による二重対角化 鏡像変換 H = I – a wwT による列の消去 Hは対称な直交行列 与えられたベクトルの第1成分以外をゼロにする。 第 k ステップでの処理 ベクトル 左からH を乗算 右からHkR を乗算 左からHkL を乗算 k 非ゼロ要素 ゼロにしたい部分 影響を受ける部分

ハウスホルダー法のアルゴリズム [Step 1] k = 1 から n –1 まで以下の[Step 2] ~ [Step 8]を繰り返す。  [Step 2] A(k, k+1:n) を 0 にする鏡像変換 HkR = I – akR wkR (wkR)T の計算  [Step 3] 行列ベクトル積: p := akR A(k:n, k:n) wkR  [Step 4] 行列のrank-1更新:  A(k:n, k:n) := A(k:n, k:n) – p(wkR)T  [Step 5] A(k+2:n, k) を 0 にする鏡像変換 HkL = I – akL wkL (wkL)T の計算  [Step 6] 行列ベクトル積: qT := akL (wkL)T A(k+1:n, k:n)  [Step 7] 行列のrank-1更新:  A(k +1:n, k:n) := A(k +1:n, k:n) – wkLqT A(k, k+1:n) A(k:n, k:n) A(k +2:n, k) A(k +1:n, k :n) k

ハウスホルダー法の特徴と問題点 特徴 問題点 全演算量のほとんどが,level-2 BLAS である行列ベクトル積と行列のrank-1更新で占められる。 全演算量: 約 (8/3)n3 行列ベクトル積の演算量: 約 (4/3)n3 rank-1更新の演算量: 約 (4/3)n3 問題点 level-2 BLASのため,行列データの再利用性なし キャッシュミス,SMPでのメモリ競合の影響大 最近のマイクロプロセッサ,SMP上での高性能が期待できない。

3. Level-3 BLAS に基づく二重対角化アルゴリズム 基本的なアイディア 密行列 A をまず帯幅 L の下三角帯行列 C に変換 次にこの帯行列を下二重対角行列 B に変換 二重対角化を2段階で行うことの利点 下三角帯行列への変換は, level-3 BLAS のみを使って実行可能 下三角帯行列から二重対角行列への変換の演算量は O(n2L) であり,前半部に比べてずっと小さい。 次数 n 下三角 帯行列化 村田法 の拡張 約 (8/3)n3 O(n2L) A C B 帯幅 L

(参考)対称行列の三重対角化の場合 Bischof のアルゴリズム(Bishof et al., 1993, 1994) 対称密行列 A をまず半帯幅 L の対称帯行列 C に変換 次にこの帯行列を三重対角行列 T に変換 Bischof のアルゴリズムの性能・精度(山本, 2005) 固有値の誤差は,LAPACKで使われる Dongarra のアルゴリズムに比べ,多くの場合2~3倍程度 速度は2~3倍高速 様々なマイクロプロセッサ上で,ピークの50~70%の性能を達成 次数 n 半帯幅 L 帯行列化 村田法 約 (4/3)n3 O(n2L) A C T

下三角帯行列化のアルゴリズム ブロック鏡像変換によるブロック列の消去 ブロック鏡像変換 H = I – WαWT Hは直交行列 ブロックベクトル ブロック鏡像変換によるブロック列の消去 ブロック鏡像変換 H = I – WαWT Hは直交行列 与えられたブロックベクトルを上三角 行列(正確には右上三角部分のみ 非零でそれ以外が零の行列)に変形 第 K ステップでの処理 左からH を乗算 左からHKL を乗算 右からHKR を乗算 非ゼロ要素 ゼロにしたい部分 影響を受ける部分

下三角帯行列化のアルゴリズム(続き) 本アルゴリズムの特徴 [Step 1] K = 1からN /L–1まで以下の[Step 2] ~ [Step 6]を繰り返す。  [Step 2] A(K, K:N) を上三角行列に変形する鏡像変換      HKR = I – WKR aKR (WKR)T の計算  [Step 3] 行列・ブロックベクトル積: P := A(K:N, K:N) WKR aKR  [Step 4] 行列のrank-L更新:  A(K:N, K:N) := A(K:N, K:N) – P(WKR)T  [Step 5] A(K+1:N, K) を上三角行列に変形する鏡像変換      HKL = I – WKL aKL (WKL)T の計算  [Step 6] 行列・ブロックベクトル積: QT := aKL (WKL)T A(K+1:N, K:N)  [Step 7] 行列のrank-L更新:       A(K+1:N, K:N) := A(K+1:N, K:N) – WkLQT すべて level-3 BLAS(行列乗算) 本アルゴリズムの特徴 演算が level-3 BLAS 中心のため,キャッシュの有効利用が可能 SMPにおけるメモリ競合の影響を低減可能

下三角帯行列の二重対角化 対称帯行列の三重対角行列への相似変換(村田法) 村田法のアイディアの二重対角化への適用(Lang, 1996) 第 k 列の三重対角化 第 k 列の副対角要素より下を 0 にする鏡像変換を左と右からかける。 Bulge-chasing 上記の結果,帯より下に非零要素がはみ出すので,相似変換を繰り返して,はみ出した分を右下に移動し,右下隅から追い出す。 村田法のアイディアの二重対角化への適用(Lang, 1996) 第 k 列の二重対角化 第 k 列の副対角要素より下を 0 にする鏡像変換を左からかける。 上記の結果,上三角部分に非零要素がはみ出すので,左右から直交変換を繰り返し掛けることにより,はみ出した分を右下に移動し,右下隅から追い出す。

第1列の二重対角化と bulge-chasing 左側からの 直交変換で 更新された 要素 左側からの 直交変換で 更新された 要素

第2列の二重対角化と bulge-chasing 左側からの 直交変換で 更新された 要素 左側からの 直交変換で 更新された 要素 演算量は 8n2L

SMP向けの並列化 下三角帯行列化 並列版の Level-3 BLAS を使えば,逐次版のプログラムをそのまま SMP 上で並列化可能 OpenMP などを用いて手動で並列化すれば,並列化効率を更に向上可能

SMP向けの並列化(続き) 二重対角化向け村田法 第1列の二重対角化処理と第2列の二重対角化処理の並列性 一般の場合の並列性 第1列に対する bulge-chasing の第 k ステップ 第2列に対する bulge-chasing の第 k–2 ステップ 第3列に対する bulge-chasing の第 k–4 ステップ ・・・   が同時に実行可能 第1列のbulge-chasing における,右側からの 第3の直交変換で更新 される要素 第2列のbulge-chasing における,右側からの 第1の直交変換で更新 される要素 第1列による二重対角化は,今後  より右の要素にのみ影響を及ぼす。 第1列の計算が右下まで行くのを待たずに,第2列の計算を開始できる。

4. 性能評価 評価環境 評価対象 評価方法 Opteron (1.8GHz), 1~4CPU 4. 性能評価 評価環境 Opteron (1.8GHz), 1~4CPU Linux 上で PGI Fortran + GOTO BLAS を使用 ピーク性能: 3.6GFLOPS/CPU PowerPC G5 (2.0GHz), 1~2CPU Mac OS X 上で IBM XL Fortran + GOTO BLAS を使用 ピーク性能: 8GFLOPS/CPU 評価対象 n = 2500 ~ 12500 の乱数行列の二重対角化 下三角帯行列化部分は並列版 GOTO BLAS,村田法部分は OpenMP により並列化 評価方法 下三角帯行列化 + 村田法の合計時間を測定し,演算量を(8/3)n3 として MFLOPS 値を算出 ブロックサイズ L は,各 n に対して最適な値を使用

Opteron (1.8GHz) 1CPU上での性能 L=100 ピークの 80% Performance (GFLOPS) Matrix size n = 12500 のとき,本アルゴリズムはピークの80%の性能を達成

Opteron (1.8GHz) 4CPU上での性能 L=100 ピークの 67% 286s Performance (MFLOPS) 3.3倍 L=100 Matrix size n = 12500 のとき,本アルゴリズムは4CPUで3.3倍の加速率 ピークの67%の性能を達成

各部分の演算時間(Opteron, n=12500) 大規模問題に対しては,村田法の占める時間の割合は小さい。 Execution time (s) 大規模問題に対しては,村田法の占める時間の割合は小さい。 村田法の加速率は,L=100 のとき4CPUで3.3倍

PowerPC G5 (2.0GHz) 1CPU上での性能 L=100 ピークの 57% Performance (GFLOPS) Matrix size n = 12500 のとき,本アルゴリズムはピークの57%の性能を達成

PowerPC G5 (2.0GHz) 2CPU上での性能 L=100 ピークの 42% 421s L=100 Performance (MFLOPS) 1.5倍 Matrix size n = 12500 のとき,本アルゴリズムは2CPUで1.5倍の加速率 ピークの42%の性能を達成

各部分の演算時間(PowerPC G5, n=12500) Execution time (s) 大規模問題に対しては,村田法の占める時間の割合は小さい。 村田法の加速率は,L=100 のとき2CPUで1.4倍

5. 特異ベクトルの計算手法 方法1: 二重対角行列の特異ベクトルを計算して2回逆変換 長所 短所 A C B 5. 特異ベクトルの計算手法 方法1: 二重対角行列の特異ベクトルを計算して2回逆変換 長所 二重対角行列の特異値・特異ベクトルを求める任意の手法が適用可能 短所 逆変換の演算量が 4mn2 (ただし,m が小さければ影響は少ない) 村田法の変換をすべて記憶するため,n2 の記憶領域が余計に必要 n L 特異値 {σi } QR法 DC法 MR3 I-SVD A C B 2mn2 2mn2 A の特異ベクトル {ui }{vi } C の特異ベクトル {zi }{wi } B の特異ベクトル {xi }{yi }

5. 特異ベクトルの計算手法 方法2: 下三角帯行列の特異ベクトルを直接計算 長所 短所 A C B 5. 特異ベクトルの計算手法 方法2: 下三角帯行列の特異ベクトルを直接計算 長所 村田法の逆変換のための演算量(2mn2)・記憶領域(n2)が不要 短所 帯行列用逆反復法(O(mnL2))と特異ベクトルの直交化(O(m2n))が必要 特異値σi は C の高精度な固有値でないため,ツイスト分解は使用不可 n L QR法 dqds法 mdLVs法 二分法 帯行列用 逆反復法 A C B 2mn2 O(mnL2+ m2n) A の特異ベクトル {ui }{vi } C の特異ベクトル {zi }{wi } 特異値 {σi }

5. 特異ベクトルの計算手法 方法3: 村田法を使わず帯行列 C の特異値・特異ベクトルを直接計算 長所 問題点 A C 5. 特異ベクトルの計算手法 方法3: 村田法を使わず帯行列 C の特異値・特異ベクトルを直接計算 長所 村田法の逆変換のための演算量(2mn2)・記憶領域(n2)が不要 うまく行けば,直交化が不要なアルゴリズムを作れる可能性あり 問題点 そもそも帯行列版の mdLVs 法,ツイスト分解は構成できるか? 演算量,演算の安定性は? n 帯行列版 mdLVs法 L 特異値 {σi } A C 帯行列版 ツイスト分解 2mn2 A の特異ベクトル {ui }{vi } C の特異ベクトル {zi }{wi }