level-3 blas に基づく特異値分解 アルゴリズムの smp 上での性能

20
Level-3 BLAS ににににににににに ににににににに SMP ににににに ににににに ににににににに にににに にににににににににに 2006 に 9 に 18 に

Upload: ira

Post on 06-Jan-2016

106 views

Category:

Documents


8 download

DESCRIPTION

Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能. 名古屋大学 計算理工学専攻 山本有作 日本応用数理学会年会 2006 年 9 月 18 日. 目次. 1 .  はじめに 2 .  従来の特異値分解アルゴリズムとその問題点 3 . Level-3 BLAS に基づく特異値分解アルゴリズム 4 .  性能評価 5 .  まとめと今後の課題. 1 .  はじめに. 本研究で対象とする問題 実正方行列 A の特異値分解 A = U S V T A : n × n 密行列 S : n × n 対角行列 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

Level-3 BLAS に基づく特異値分解アルゴリズムの SMP 上での性能

名古屋大学 計算理工学専攻山本有作

日本応用数理学会年会2006 年 9 月 18 日

Page 2: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

目次

1 .  はじめに

2 .  従来の特異値分解アルゴリズムとその問題点

3 .   Level-3 BLAS に基づく特異値分解アルゴリズム

4 .  性能評価

5 .  まとめと今後の課題

Page 3: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

1 .  はじめに

• 本研究で対象とする問題– 実正方行列 A の特異値分解 A = UVT

• A : n×n 密行列• : n×n 対角行列• U , V : n×n 直交行列

• 応用分野– 統計計算 (主成分分析,最小 2 乗法)– 信号処理 (独立成分分析など)– 画像処理 (圧縮,ノイズ除去)– 電子状態計算

Page 4: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

本研究の目的

• 共有メモリ型並列計算機( SMP )上で高性能を達成できる特異値分解ソルバを作成し,評価

• 背景– 問題の大規模化– CPU のマルチコア化などによる SMP 環境の普及

Cell プロセッサ( 1+8 コア)

デュアルコア Xeon

Page 5: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

2 .  従来の特異値分解アルゴリズムとその問題点

U0TAV0 = B

(U0, V0: 直交行列 )

Bvi =σi xi

BTxi =σi yi

vi = V0 yi

ui = U0 xi

二重対角化

二重対角行列の特異値・特異 計算ベクトル

逆変換

二重対角行列 B

B の特異値 {σi } ,  特異ベクトル {xi }{yi }

A の特異ベクトル {ui }, {vi

}

密行列 A 計算内容 計算手法

ハウスホルダー法

QR 法分割統治法MR3 アルゴリズムI-SVD アルゴリズム

逆変換

Page 6: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

各部分の演算量と実行時間

(8/3) n3

O(n2)~ O(n3)

4mn2

二重対角化

二重対角行列の特異値・特異 計算ベクトル

逆変換

A の特異ベクトル {ui }, {vi

}

密行列 A 演算量

・二重対角化が実行時間の 大部分を占める・速度向上率が低い

(左右 m 本ずつの特異ベクトル)

実行時間(全特異 )ベクトル

0

100

200

300

400

500

600

1 2 4

逆変換分割統治法二重対角化

n = 5000 , Xeon 2.8GHz ( 1 ~ 4PU )LAPACK での実行時間(秒)

Page 7: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

二重対角化の性能が出ない原因

• 二重対角化の演算パターン– 左右からのハウスホルダー変換による行・列の消去

• A(k) := (I – w wT ) A(k)

• 演算は level-2 BLAS (行列ベクトル積と rank-1 更新)– ただしブロック化により半分は level-3 BLAS にすることが可

• 演算パターンに関する問題点– Level-2 BLAS はデータ再利用性が低い。    キャッシュの有効利用が困難であり,単体性能が出にくい。    プロセッサ間のアクセス競合により,並列性能向上も困難

k

0

0

0

0

0

0

ゼロにしたい部分影響を受ける部分

非ゼロ要素

右からの変換

左からの変換

A(k)

Page 8: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

• 2段階の二重対角化アルゴリズム( Bischof et al., ’93 )– 密行列 A をまず帯幅 L の下三角帯行列 C に変換– 次にこの帯行列を下二重対角行列 B に変換

• 二重対角化を2段階で行うことの利点– 前半の変換は, level-3 BLAS (行列乗算)のみを使って実行

可能  キャッシュの有効利用が可能

– 後半の変換は level-2 BLAS が中心だが,演算量は O(n2L)• 前半部に比べてずっと小さい。

3 .   Level-3 BLAS に基づく特異値分解アルゴリズム

0

0

A B

次数 n

約 (8/3)n3 O(n2L)

下三角帯行列化

村田法の拡張0

0

帯幅 LC

Page 9: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

下三角帯行列化のアルゴリズム

ブロック鏡像変換によるブロック列の消去– ブロック鏡像変換 H = I – WαWT

• H は直交行列• 与えられたブロックベクトルを上三

角行列(正確には右上三角部分のみ非零でそれ以外が零の行列)に変形

第 K ステップでの処理

ゼロにしたい部分 影響を受ける部分非ゼロ要素

左から H

を乗算

ブロックベクトル

0

0

0

0

0

0

右から HKR

を乗算

左から HKL

を乗算

Page 10: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

下三角帯行列化のアルゴリズム(続き)

[Step 1]   K = 1 から N /L–1 まで以下の [Step 2] ~ [Step 6] を繰り返す。  [Step 2]   A(K, K:N) を上三角行列に変形する鏡像変換      HK

R = I – WKR K

R (WKR)T の計算

  [Step 3]  行列・ 積: ブロックベクトル P := A(K:N, K:N) WKR K

R

  [Step 4]  行列の rank-L 更新:  A(K:N, K:N) := A(K:N, K:N) – P(WKR)T

  [Step 5]   A(K+1:N, K) を上三角行列に変形する鏡像変換      HK

L = I – WKL K

L (WKL)T の計算

  [Step 6]  行列・ 積: ブロックベクトル QT := KL (WK

L)T A(K+1:N, K:N)

  [Step 7]  行列の rank-L 更新:      A(K+1:N, K:N) := A(K+1:N, K:N) – Wk

LQT

すべて level-3 BLAS (行列乗算)• 本アルゴリズムの特徴

– 演算が level-3 BLAS 中心のため,キャッシュの有効利用が可能

– SMP におけるメモリ競合の影響を低減可能

Page 11: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

本アルゴリズムの長所と短所

• 長所– Level-3 BLAS の利用により,二重対角化の性能を向上可能

• 同様のアイディアに基づく三重対角化アルゴリズムでは,高い単体性能・並列性能を確認済み

• 短所– 特異ベクトル計算のための計算量・記憶領域が増大

• 2段階の逆変換あるいは帯行列の特異値分解が必要• 詳しくは次のスライドで説明

– 二重対角化の高速化効果が大きければ,計算量増大を考慮しても全体としては高速化できると予想

– 特に,求める特異ベクトルが少ない場合は効果が大きいはず。

Page 12: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

特異ベクトルの計算手法

• 方法1: 下三角帯行列の特異ベクトルを直接計算

• 長所– 固有ベクトルの逆変換は1段階のみ– 逆変換の演算量は 4mn2 (従来法と同じ)

• 短所– 特異ベクトル計算のための実用的な手法は帯行列用逆反復法のみ– 直交化が必要であり,演算量は O(mnL2+m2n)

0

0

A B

n

4mn2

0

0C

特異値{σi }

L

C の特異ベクトル{zi }{wi }

A の特異ベクトル{ui }{vi }

QR 法dqds 法mdLVs 法二分法

帯行列用逆反復法O(mnL2+ m2n)

Page 13: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

特異ベクトルの計算手法(続き)

• 方法2: 二重対角行列の特異ベクトルを計算して2回逆変換

• 長所– 二重対角行列の特異値・特異ベクトルを求める任意の手法が適用可

能• 短所

– 逆変換の演算量が 8mn2 (従来法の 2倍)。ただし level-3 化可能– 村田法の変換をすべて記憶するため, n2 の記憶領域が余計に必要

0

0

A B

n

4mn2 4mn2

0

0C

B の特異ベクトル{xi }{yi }

特異値{σi }

L

C の特異ベクトル{zi }{wi }

A の特異ベクトル{ui }{vi }

QR 法DC 法MR3

I-SVD

SMP 上での level-3 BLAS の高速性を鑑み,方法2を採用

Page 14: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

アルゴリズムの全体像

• 2段階の二重対角化と2段階の逆変換• 二重対角行列の特異値分解には分割統治法を使用

• 特徴– 演算量が O(n3) となる部分はすべて level-3 BLAS で実行可能– SMP 向け並列化は,基本的に並列版 level-3 BLAS の使用により実現– 村田法は OpenMP によるパイプライン型の並列化

0

0

A B

4mn2 4mn2

0

0C

B の特異値 {σi }特異 ベクトル {xi }{yi }

C の特異ベクトル{zi }{wi }

A の特異ベクトル{ui }{vi }

(8/3)n3 O(n2L)

分割統治法( LAPACK DBDSDC )

level-3 level-2

level-3 level-3

O(n2) ~ O(n3)level-3

Page 15: Level-3 BLAS に基づく特異値分解 アルゴリズムの 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 列の計算を開始できる。

Page 16: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

4 .  性能評価

• 評価環境– 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

• 評価対象・条件– Level-3 BLAS に基づくアルゴリズムと LAPACK の性能を比較– n = 1200 ~ 20000 の乱数行列の特異値分解(全特異ベクトルを計

算)• Level-3 アルゴリズムにとっては一番不利な条件

– Level-3 アルゴリズムの L (半帯幅)は各 n ごとに最適値を使用

Page 17: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

Xeon での実行時間

• プロセッサ数を変えたときの実行時間

• 結果– Level-3 アルゴリズムでは PU 数に応じて実行時間が順調に減少

• 4PU での加速率は 3~ 3.2 倍– 4PU の場合は level-3 アルゴリズムが従来法より高速

0

2

4

6

8

10

12

14

16

1 2 4

level-3LAPACK

0

20

40

60

80

100

120

1 2 4

level-3LAPACK

0

100

200

300

400

500

600

700

800

1 2 4

level-3LAPACK

n = 1200 n = 2500 n = 5000

実行時間

PU 数

Page 18: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

HPC2500 での実行時間

• プロセッサ数を変えたときの実行時間

• 結果– Level-3 アルゴリズムは従来法に比べて最大 3.5倍高速– プロセッサ数が多いとき加速率が鈍るのは,非並列化部分(ブ

ロック鏡像変換の作成など)の影響と思われる。

0

100

200

300

400

500

600

700

800

1 2 4 8 16 32

level-3LAPACK

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

1 2 4 8 16 32

level-3LAPACK

0

2000

4000

6000

8000

10000

12000

14000

1 2 4 8 16 32

level-3LAPACK

n = 5000 n = 10000 n = 20000

実行時間

PU 数

3.5 倍

Page 19: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

0

100

200

300

400

500

600

700

800

1 2 4

2逆変換1逆変換

分割統治法村田法帯行列化

両手法の実行時間の内訳

• Xeon , n=5000 の場合

• 考察– Level-3 アルゴリズムでは,どの部分の実行時間も順調に減少

– 逆変換 1 (村田法の逆変換)の占める時間が大きい。     この部分について,さらに高速化が必要– 必要な特異ベクトルの本数が少ない場合, level-3 アルゴリ

ズムはさらに有利

0

100

200

300

400

500

600

1 2 4

逆変換分割統治法二重対角化

Page 20: Level-3 BLAS に基づく特異値分解 アルゴリズムの SMP 上での性能

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

1 2 4 8 16 32

2逆変換1逆変換

分割統治法村田法帯行列化

両手法の実行時間の内訳

• HPC2500 , n=10,000 の場合

• 考察– Level-3 アルゴリズムでは,どの部分の実行時間も順調に減少

– 従来法は,二重対角化の部分の加速が鈍い。• ただし, 32PU で 6倍程度は加速• メモリバンド幅が大きいためと思われる。

0

500

1000

1500

2000

2500

3000

3500

4000

4500

5000

1 2 4 8 16 32

逆変換分割統治法二重対角化