2. 共有メモリ型並列計算機での特異値分解の高速化

Slides:



Advertisements
Similar presentations
1 広島大学 理学研究科 尾崎 裕介 石川 健一. 1. Graphic Processing Unit (GPU) とは? 2. Nvidia CUDA programming model 3. GPU の高速化 4. QCD with CUDA 5. 結果 6. まとめ 2.
Advertisements

HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
大規模な三角 Toeplitz 線形方 程式の高速解法とその応用 ○ 安村 修一(法政大学 4 年) 李 磊(法政大学) 日本応用数理学会「行列・固有値の解法とその応用」研究部会 第6回研究会.
Level-3 BLASに基づく特異値分解 アルゴリズムのSMP上での性能
CPU/GPUを協調利用する ソフトウェア開発環境
在庫管理問題の動的計画法による 解法とCUDA を用いた高速化
特異値分解とその応用 2009年5月12日 計算理工学専攻 張研究室 山本有作.
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
※ 対称密行列の固有値分解は特異値分解と共通点が多い
Chapter11-4(前半) 加藤健.
Intel AVX命令を用いた並列FFTの実現と評価
Fill-in LevelつきIC分解による 前処理について
A Q R QR分解とは? → × ◆QR分解 QTQ = I (単位行列) ◆応用例 ◆主な計算方法 n m 今回はこの方法に注目
三重対角化アルゴリズムの性能評価 早戸拓也・廣田悠輔.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
研究集会 「超大規模行列の数理的諸問題とその高速解法」 2007 年 3 月 7 日 完全パイプライン化シフト QR 法による 実対称三重対角行列の 固有値並列計算 宮田 考史  山本 有作  張 紹良   名古屋大学 大学院工学研究科 計算理工学専攻.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
対角マトリックスを用いた3次元剛塑性有限要素法の並列計算 対角マトリックスを用いた剛塑性有限要素法
AllReduce アルゴリズムによる QR 分解の精度について
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
PCクラスタ上での 連立一次方程式の解の精度保証
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第5回 計算理工学専攻 張研究室 山本有作.
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
正方行列向け特異値分解の CUDAによる高速化
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
アクセラレータを用いた 大規模へテロ環境における Linpack
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
非対称行列向けマルチシフトQR法の 性能予測方式
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
応用数理工学特論 第6回 計算理工学専攻 張研究室 山本有作.
高速剰余算アルゴリズムとそのハードウェア実装についての研究
Level-3 BLASに基づく二重対角化 アルゴリズムとその性能評価
コンピュータの歴史 〜計算速度の進歩〜 1E15M009-3 伊藤佳樹 1E15M035-2 柴田将馬 1E15M061-1 花岡沙紀
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日 (木) 発表者 大城亜里沙.
独立成分分析 (ICA:Independent Component Analysis )
知能システム論I(13) 行列の演算と応用(Matrix) 2008.7.8.
「コアの数なんて どうでもいい」 五島 正裕(東大).
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
変換されても変換されない頑固ベクトル どうしたら頑固になれるか 頑固なベクトルは何に使える?
航空エンジンの翼列周り流れ解析のメニーコアシステム向け最適化
パターン認識特論 担当:和田 俊和 部屋 A513 主成分分析
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
目的:高速QR分解ルーチンのGPUクラスタ実装
資料 線型変換のイメージ 固有値、固有ベクトル 平賀譲(209研究室) 資料
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
社会の情報インフラストラクチャとして、高性能コンピュータおよびネットワークの重要性はますます増大しています。本研究室では、コンピュータおよびネットワークの高速化を狙いとする並列・分散情報処理の科学と技術に関する研究に取り組んでいます。効率のよいシステムの実現を目指して、下記の項目を追求しています。 ◇コンピュータアーキテクチャ.
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
1ーQー18 音声特徴量抽出のための音素部分空間統合法の検討
行列 一次変換,とくに直交変換.
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
密行列固有値解法の最近の発展 (I) - Multiple Relatively Robust Representation アルゴリズム - 2004年11月26日 名古屋大学 計算理工学専攻 山本有作 日立製作所の山本有作です。 「~」について発表いたします。
情報論理工学 研究室 第1回:並列とは.
キャッシュマシン向け三重対角化 アルゴリズムの性能予測方式
長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化
密行列固有値解法の最近の発展(II) ー マルチシフトQR法 ー
目次 はじめに 収束性理論解析 数値実験 まとめ 特異値計算のための dqds 法 シフトによる収束の加速
応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング
分散メモリ型並列計算機上での行列演算の並列化
2008年 7月17日 応用数理工学特論 期末発表 鈴木綾華,程飛
Presentation transcript:

応用数理工学特論 第10回 日立製作所の山本有作です。 「~」について発表いたします。 2008年7月3日 計算理工学専攻 山本有作

2. 共有メモリ型並列計算機での特異値分解の高速化 目次 1. はじめに 2. 共有メモリ型並列計算機での特異値分解の高速化 ~ 正方行列の特異値分解 ~ 3. SIMD超並列プロセッサでの特異値分解の高速化 ~ 長方行列の特異値分解 ~ 本発表では,はじめに,研究の背景を述べてから,スパースソルバの概要,並列化手法,そして本研究で工夫した点の一つであるRISCプロセッサ向けの最適化についてご説明します。最後に,並列計算機SR2201上での性能評価とまとめを述べます。

1. はじめに

特異値分解とは 任意の実正方行列 A は,直交行列 U,対角行列 S,直交行列 VT の積に分解できる。 参考 A が実対称行列の場合,A=UDUT A が任意の実行列の場合,A=SDS–1 A が任意の実行列の場合,A=URUT A :n×n 実行列 U :n×n 直交行列 V : n×n 直交行列 S : n×n 対角行列 n = × × n n

特異値と特異ベクトル A=USV T において, 特異ベクトルの性質 V の各列 vi を右特異ベクトル U の各列 ui を左特異ベクトル S の要素 si を特異値,と呼ぶ。 特異ベクトルの性質 AV=US より, Avi = si ui UTA=S V T より, uiTA = si viT

固有値分解(対角化)との関係 A=USV T より, ATA= VSUTUSV T = VS 2V T   よって,V は ATA を対角化する直交行列   A の右特異ベクトル = ATA の固有ベクトル A の特異値 = ATA の固有値の平方根 一方, AAT= USV TVSU T = US 2U T  よって,V は ATA を対角化する直交行列   A の左特異ベクトル = AAT の固有ベクトル

特異値分解を求めるアルゴリズム 二重対角行列への変換 二重対角行列の特異値分解 U0TAV0 = B (U0, V0: 直交行列) よって,U= U0U1 ,V= V0V1 とおくと(逆変換), U0TAV0 = B (U0, V0: 直交行列) U1TBV1 = S (U1, V1: 直交行列) U1TU0TAV0V1 = S A = USV T

特異値分解の応用 信号処理 画像処理 電子状態計算 文書検索 各種統計計算 Filter Diagonalization Method Latent Semantic Indexing 各種統計計算 主成分分析 独立成分分析 最小二乗法

対象とする計算機

共有メモリ型並列計算機 アーキテクチャ 例1: マルチコアプロセッサ 例2: 共有メモリ型のスーパーコンピュータ 複数のプロセッサ(PU)がバスを   通してメモリを共有 PUはそれぞれキャッシュを持つ 例1: マルチコアプロセッサ Intel社 デュアルコアXeon 1チップに2個のプロセッサを共有メモリ型で集積 例2: 共有メモリ型のスーパーコンピュータ 富士通 PrimePower HPC2500 最大128個のPUを共有メモリで結合 キャッシュ PU0 PU1 PU2 PU3 バス メモリ デュアルコア Xeon PrimePower HPC2500

SIMD超並列プロセッサ 1チップに100個単位のプロセッサを搭載 全プロセッサが別々のデータに対して同じ命令を実行する SIMD(Single Instruction Multiple Data)型の並列計算機 線形計算に最適 汎用プロセッサの10~100倍の性能 ClearSpeed社CSX600: 96プロセッサ,48GFLOPS(倍精度) 東大GRAPE-DR: 512プロセッサ,256GFLOPS(倍精度) 演算性能は極めて高いが,データ転送速度は汎用プロセッサと同程度 データ再利用性の向上が,共有メモリ型並列計算機以上に重要

512コアプロセッサ(GRAPE-DR)

グラフィックスプロセッサ(GPU) GPU(Graphics Processing Unit)の高速化 CPUを大きく上回るペースで演算性能が向上 グラフィックスメモリも大容量化・高速化 nVIDIA社 GeForce8800GTX ・ 240個の演算プロセッサ ・ 演算性能: 933GFLOPS(単精度)          90GFLOPS(倍精度) ・ メモリ: 1GB GPUを汎用の数値計算に使うGPGPU(General-Purpose GPU)が注目を集める 計算機としてのアーキテクチャはSIMD超並列型

2. 共有メモリ型並列計算機での特異値分解の高速化 2. 共有メモリ型並列計算機での特異値分解の高速化 ~ 正方行列の特異値分解 ~

正方行列の特異値分解 = <応用> A :n×n 密行列 U :n×n 直交行列 V : n×n 直交行列 S : n×n 対角行列 n × 各種統計計算 より応用の多い長方行列の特異値分解は,正方行列の特異値分解に帰着される。

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

各部分の演算量と実行時間 密行列 A 演算量 実行時間(全特異ベクトル) (8/3) n3 二重対角化 二重対角行列の n = 5000,Xeon 2.8GHz(1~4PU) LAPACK での実行時間(秒) (8/3) n3 二重対角化 密行列Aをまず三重対角行列Tに相似変換してからTの固有値・固有ベクトルを求めるのが最も一般的な計算法。 三重対角化には,後に述べるハウスホルダー法を使う場合がほとんど。 三重対角行列の固有値・固有ベクトルの計算には,色々なアルゴリズムがある。 二重対角行列の 特異値・特異ベクトル計算 O(n2) ~ O(n3) 4mn2 逆変換 (左右 m 本ずつの 特異ベクトル) ・二重対角化が実行時間の  大部分を占める ・速度向上率が低い Aの特異ベクトル {ui }, {vi }

特異値分解アルゴリズムの高速化 ハウスホルダー法による二重対角化 第 k ステップでの処理 鏡像変換 H = I – a wwT による列の消去 Hは対称な直交行列 与えられたベクトルの第1成分以外をゼロにする HA(k) = A(k) – au (utA(k)) 第 k ステップでの処理 ベクトル 左からH を乗算 行列ベクトル積 rank-1更新 A(k) 右からHkR を乗算 左からHkL を乗算 k 非ゼロ要素 ゼロにしたい部分 影響を受ける部分

ハウスホルダー法の特徴と問題点 特徴 問題点 全演算量のほとんどが,BLAS2 である行列ベクトル積と行列のrank-1更新で占められる。 rank-1更新の演算量: 約 (4/3)n3 問題点 BLAS2のため,行列データの再利用性なし キャッシュミス,メモリ競合の影響大 共有メモリ型並列計算機上で高性能が出ない理由

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

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

帯行列の二重対角化(村田法) ・演算量は 8n2L ・並列化も可能 左側からの 直交変換で 更新された 要素 左側からの 直交変換で

本アルゴリズムの長所と短所 長所 短所 BLAS3 の利用により,二重対角化の性能を向上可能 特異ベクトル計算のための計算量・記憶領域が増大 同様のアイディアに基づく三重対角化アルゴリズムでは,高い単体性能・並列性能を確認済み 短所 特異ベクトル計算のための計算量・記憶領域が増大 2段階の逆変換が必要 詳しくは次のスライドで説明 二重対角化の高速化効果が大きければ,計算量増大を考慮しても全体としては高速化できると予想 特に,求める特異ベクトルが少ない場合は効果が大きいはず。

特異ベクトルの計算手法 二重対角行列の特異ベクトルを計算して2回逆変換 長所 短所 A C B 二重対角行列の特異値・特異ベクトルを求める任意の手法が適用可能 短所 逆変換の演算量が 8mn2 (従来法の2倍)。ただし BLAS3 で実行可能 村田法の変換をすべて記憶するため,n2 の記憶領域が余計に必要 n L 特異値 {σi } QR法 DC法 MR3 I-SVD A C B 4mn2 4mn2 A の特異ベクトル {ui }{vi } C の特異ベクトル {zi }{wi } B の特異ベクトル {xi }{yi }

性能評価

性能評価 評価環境 評価対象・条件 Xeon (2.8GHz), 1~4PU Linux + Intel Fortran ver. 8.1 BLAS: Intel Math Kernel Library LAPACK: Intel Math Kernel Library ピーク性能: 5.6GFLOPS/CPU 富士通 PrimePower HPC2500 (2.0GHz), 1~32PU 富士通 Fortran BLAS: 富士通並列化版 BLAS LAPACK: 富士通並列化版 LAPACK ピーク性能: 8GFLOPS/CPU 評価対象・条件 BLAS3 に基づくアルゴリズムと LAPACK の性能を比較 n = 1200 ~ 20000 の乱数行列の特異値分解(全特異ベクトルを計算) BLAS3 アルゴリズムにとっては一番不利な条件 BLAS3 アルゴリズムの L(半帯幅)は各 n ごとに最適値を使用

Xeon での実行時間 プロセッサ数を変えたときの実行時間 結果 BLAS3 アルゴリズムでは PU 数に応じて実行時間が順調に減少 4PU の場合は BLAS3 アルゴリズムが従来法より高速 n = 1200 n = 2500 n = 5000 実行時間(秒) PU数

HPC2500 での実行時間 プロセッサ数を変えたときの実行時間 結果 BLAS3 アルゴリズムは従来法に比べて最大3.5倍高速 プロセッサ数が多いとき加速率が鈍るのは,非並列化部分(ブロック鏡像変換の作成など)の影響と思われる。 n = 5000 n = 10000 n = 20000 実行時間(秒) 3.5倍 PU数

両手法の実行時間の内訳 Xeon,n=5000の場合 考察 BLAS3 アルゴリズムでは,どの部分の実行時間も順調に減少 逆変換1(村田法の逆変換)の占める時間が大きい。      この部分について,さらに高速化が必要 必要な特異ベクトルの本数が少ない場合,BLAS3 アルゴリズムはさらに有利

両手法の実行時間の内訳 HPC2500,n=10,000の場合 考察 BLAS3 アルゴリズムでは,どの部分の実行時間も順調に減少 従来法は,二重対角化の部分の加速が鈍い。 ただし,32PUで6倍程度は加速 メモリバンド幅が大きいためと思われる。

まとめと今後の課題

まとめと今後の課題 §まとめ §今後の課題 共有メモリ型並列計算機向けに,BLAS3 に基づく特異値分解アルゴリズムを紹介した Xeon と HPC2500 で評価した結果,PU 数が多い場合は従来法より高い性能が得られた 特に,求める特異ベクトルの本数が少ない場合は効果が大きい §今後の課題 性能の改善 より効率の良い並列化 村田法の逆変換の高速化 より多様なマシン上での性能評価 マルチコアプロセッサ SIMD超並列プロセッサ (Clear Speed,GRAPE-DR,GPU など)

3. SIMD超並列プロセッサによる特異値分解の高速化 ~ 長方行列の特異値分解 ~

長方行列の特異値分解 = <応用> A :m×n 密行列 U :m×n 列直交行列 V : n×n 直交行列 S : n×n 対角行列 × 10万 5千 (例) 画像処理 電子状態計算 (Filter Diagonalization Method) 文書検索 (Latent Semantic Indexing) 各種統計計算 (主成分分析,最小二乗法)

高い演算能力を持つSIMD超並列プロセッサ ClearSpeed CSX600 1個の汎用コア + 96個の演算コア 48GFLOPS (倍精度) GRAPE-DR 512個の演算コア 512GFLOPS(単精度) 256GFLOPS(倍精度) GeForce GTX280 (GPU) 240個の演算コア 933GFLOPS(単精度) 90GFLOPS(倍精度) 多数の演算装置の集積により極めて高いFLOPS値 メモリアクセス性能の相対的な低下によるメモリネック

Level-3 BLAS(行列積)の利用 行列積 C:=C+AB = C A B 演算量に比べ,データ量は O(1/N) キャッシュをうまく使うことで,メモリネックを軽減可能 行列積を効率的に使えれば,一般のアルゴリズムも高速化可能 = × + C A B データ量: O(N 2) 演算量:  O(N 3) ※行列ベクトル積( y := y + Ax)では,データ量・演算量ともにO(N 2)

本章の目的 長方行列の特異値分解アルゴリズムをCSX600を利用して高速化する 性能評価を行い,更なる高速化に向けての課題を明らかにする

ClearSpeed CSX600 について

CSX600のアーキテクチャと性能 CSX600 チップ ClearSpeed Advance ボード 1個の主プロセッサ 96個の演算専用プロセッサ 64ビット 倍精度2演算/サイクル 128B レジスタファイル 6KB SRAM 250MHz で動作 ピーク性能: 48GFLOPS ClearSpeed Advance ボード 2個の CSX600 プロセッサ 1GB DRAM PCI-X バスにより PC 本体と接続 ピーク性能: 96GFLOPS

CSX600の利用環境 Software Development Kit CSXL ライブラリ CSFFT ライブラリ コンパイラ: Cn 言語によるチップ内並列プログラミング デバッガ シミュレータ CSXL ライブラリ ClearSpeed Advance ボード用の BLAS 行列データを PC の主メモリ上に置いてコール PC ⇔ ボード間の転送はライブラリ内で実行 公称性能: DGEMM(行列乗算)で 50GFLOPS CSFFT ライブラリ 今回はこれを利用

CSXLのDGEMMの性能 A B × C += B A × C += m = k = 450 1000 ≦ n ≦ 6000 k = 450 1000 ≦ m = n ≦ 6000 性能(MFLOPS) n n,m A B × C += n k m k n B A × C += m 性能を引き出すにはサイズパラメータのうち少なくとも2個を大きい値にとる必要がある

CSX600向けの    高速化手法

長方行列の特異値分解の手順 A R Q B QR分解 A = QR 二重対角化 R = U1 B V1T 特異値分解 m n Q R B QR分解 A = QR 二重対角化 R = U1 B V1T 特異値分解 B = U2 S V2T 逆変換 R = U’ S V T V = V1 V2 U’ = U1 U2 Qの乗算  A = U S V T U = QU’

長方行列の特異値分解の手順 QR分解 A = QR 実行時間の大部分を占める 二重対角化 R = U1 B V1T 特異値分解 m ≫ n (例:m =100000, n =5000)の場合 計算量 QR分解 A = QR 2mn2 実行時間の大部分を占める 二重対角化 R = U1 B V1T (8/3)n3 特異値分解 B = U2 S V2T O(n2) ~ O(n3) 逆変換 R = U’ S V T V = V1 V2 U’ = U1 U2 2n3 ~ 4n3 Qの乗算  A = U S V T U = QU’ 4mn2

高速化の方針 §CSX600を利用する部分 QR分解 A = QR Qの乗算 U = QU’ A = U S V T 行列乗算のみ高速化可能 Qの乗算  A = U S V T U = QU’ 行列乗算中心のアルゴリズム §CSX600を利用しない(CPUのみで実行する)部分 二重対角化 R = U1 B V1T LAPACKのDGEBRD 逆変換 R = U’ S V T V = V1 V2 U’ = U1 U2 LAPACKのDORMBR 特異値分解 B = U2 S V2T I-SVD(IDBDSLV)

ハウスホルダー変換によるQR分解 ハウスホルダー変換による列の消去 H1 A = ( I – t1 y1 y1T ) A = A(1) level-2 BLAS CSXLを使えない 上三角化とQR分解 Hn・・・ H2 H1 A = A(n) A = H1 H2・・・ Hn A(n) = QR ・・・ A A(1) A(2) A(n) = R

複数のハウスホルダー変換の合成 Compact WY representation Hn・・・ H2 H1 = ( I – tn yn ynT ) ・・・ ( I – t2 y2 y2T )( I – t1 y1 y1T ) = I – Yn Tn YnT ただし, Yn = [ y1 | y2 | ・・・ | yn] (m×n 行列)       Tn: n×n 下三角行列 I – ・・・ I – = I – × × × × × × 複数のハウスホルダー変換の作用を,行列乗算として まとめて実行可能

ハウスホルダー変換のブロック化 = HL ・・・ H1 (I – Y T YT ) = = (I – Y T YT ) = 複数のハウスホルダー変換の合成 = (I – Y T YT ) 行列乗算としてまとめて作用 CSX600で高速化

(Ⅰ)ブロックQR分解(LAPACKで使用) I – Y1T1Y1T I – Y2T2Y2T I – Y3T3Y3T 分解 更新 H1 H2 H3 H3H2H1= I – Y1T1Y1T ・・・行列乗算 ブロックの分解(  )は行列・ベクトル積 演算量: L (ブロック幅) << n のとき 2mn2 CSX600を使うにはL≧450 ⇒行列・ベクトル積の演算量の増加

(Ⅱ)再帰的QR分解 ・・・行列乗算 ほぼ全ての演算が行列乗算 演算量: 3mn2 Qの乗算の効率が良い I – Y2T2Y2T 更新 合成 (I – Y1T1Y1T) ×(I – Y2T2Y2T) = I – Y T YT I – Y1T1Y1T ・・・行列乗算 I – Y11T11Y11T ほぼ全ての演算が行列乗算 演算量: 3mn2 Qの乗算の効率が良い

(Ⅲ)再帰的QR分解の拡張 L ・・・行列乗算 ほぼ全ての演算が行列乗算 演算量:Ⅰ(2mn2)とⅡ(3mn2)の中間 I – Y1T1Y1T I – Y2T2Y2T I – Y3T3Y3T 分解 更新 I – Y1T1Y1T ・・・行列乗算 ほぼ全ての演算が行列乗算 演算量:Ⅰ(2mn2)とⅡ(3mn2)の中間 ブロック幅Lを適切に選ぶことで,他の2方法より高速になる可能性がある

Q の乗算 (Ⅰ)ブロックQR分解・(Ⅲ)再帰的QR分解の拡張の場合 Q = ( I – Yn/L Tn/L Yn/LT ) ・・・ (I – Y1 T1 Y1T ) L I – × ・・・ I – × × × (Ⅱ)再帰的QR分解の場合 Q = I – Y T YT × I – n 行列サイズの大きいⅡの方がCSXLの性能を引き出せる Ⅰ・Ⅲの方が使用するメモリの量が少ない

性能評価

評価内容 評価環境 評価例題 評価項目 Xeon 3.2GHz,メモリ8GB Intel Fortran -O3 + Intel Math Kernel Library ClearSpeed Advance ボード 評価例題 [-0.5,0.5] の一様乱数を要素とする m×n 乱数行列の特異値分解 10000 ≦ m ≦ 100000,1000 ≦ n ≦ 4000 評価項目 ClearSpeed ボードでの3種のQR分解法の性能比較 特異値分解全体の ClearSpeed ボードによる高速化効果 精度評価

Ⅲ.再帰的QR分解の拡張(数字はブロック幅) CSX600使用時の各手法の性能比較(1) m =100000 n =4000 実行時間(秒) Ⅱ.再帰的 QR分解 Ⅰ.ブロックQR分解 Ⅲ.再帰的QR分解の拡張(数字はブロック幅)

Ⅲ.再帰的QR分解の拡張(数字はブロック幅) CSX600使用時の各手法の性能比較(2) m =10000 n =4000 実行時間(秒) Ⅰ.ブロックQR分解 Ⅱ.再帰的 QR分解 Ⅲ.再帰的QR分解の拡張(数字はブロック幅)

CSX600による特異値分解全体の高速化 m = 10000 n=1000 (m:n = 10:1) 実行時間(秒) 1.3倍 1.2倍 1.8倍 3.1倍 LAPACKのDGESDD      再帰的QR分解を利用 LAPACKのDGESDD      再帰的QR分解を利用

高速化率=PC単体での実行時間/PC+CSX600での実行時間 行列サイズ による高速化率の変化(1) §再帰的QR分解を用いた場合 高速化率 m n 高速化率=PC単体での実行時間/PC+CSX600での実行時間

各部分の高速化率の変化 m = 50000 m = 100000 高速化率 n n

高速化率=PC単体での実行時間/PC+CSX600での実行時間 行列サイズ による高速化率の変化(2) §LAPACKのDGESDDを用いた場合 高速化率 m n 高速化率=PC単体での実行時間/PC+CSX600での実行時間

精度評価 ∥US VT – A∥F ∥UTU – I∥F 左特異ベクトルの直交性 残差 m : n : m : n : 1000 2000 3000 m : n : 1000 2000 3000

まとめと今後の課題

まとめと今後の課題 §まとめ CSX600による長方行列特異値分解の高速化を行った CSX600に適したQR分解アルゴリズムの選択を行った §今後の課題 よりCSX600に適したQR分解アルゴリズムの開発 CSX600による Rの特異値分解の高速化 他の行列計算へのCSX600の適用