長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

26
長長長長長長長長長長長長 長長長長長長長長長長長長長長 長長長 2007 年 1 年 18 年 HPCS2007 年年 年 年年 年年 年年年年年年 () 年年 年年年 年年年年年 () 年 年 年年 年 年年年年年年年 ()

Upload: shona

Post on 24-Jan-2016

39 views

Category:

Documents


0 download

DESCRIPTION

長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化. 2007 年 1 月 18 日  HPCS2007. 深谷 猛,山本 有作 (名古屋大学) 畝山 多加志 (京都大学) 堀 玄,梅野 健 (理化学研究所). 概要. 背景と目的 CSX600 のアーキテクチャと性能 長方行列の特異値分解アルゴリズム CSX600 向けの高速化手法 性能評価 まとめと今後の課題. 1 .  背景と目的. 長方行列の特異値分解 応用 画像処理 電子状態計算 ( Filter Diagonalization Method ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

長方行列向け特異値分解の浮動小数点コプロセッサによ

る高速化

2007 年 1 月 18 日  HPCS2007

深谷 猛,山本 有作 (名古屋大学)畝山 多加志 (京都大学)

堀 玄,梅野 健 (理化学研究所)

Page 2: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

2

概要

• 背景と目的• CSX600 のアーキテクチャと性能• 長方行列の特異値分解アルゴリズム• CSX600 向けの高速化手法• 性能評価• まとめと今後の課題

Page 3: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

3

1 .  背景と目的

: m×n :::U : m×n 列直交行列V : n×n 直交行列 : n×n ::::

= × ×

• 長方行列の特異値分解

• 応用– 画像処理– 電子状態計算 ( Filter Diagonalization Method )– 文書検索 ( Latent Semantic Indexing )– 各種統計計算 (主成分分析,最小二乗法)

数万 × 数千以上の行列の特異値分解    高速化が必要

Page 4: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

4

• Cell– 1 個の汎用 CPU コア + 8 個の専用コア– 256GFLOPS (単精度)

• GRAPE-DR– 512 個の演算コア– 512GFLOPS (単精度)– 384GFLOPS (倍精度)

• ClearSpeed CSX600– 1 個の汎用コア + 96 個の演算コア– 48GFLOPS (倍精度)

高い浮動小数点能力を持つ専用プロセッサの登場

Page 5: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

5

専用プロセッサの特徴

• 多数の浮動小数点演算器– 極めて高い GFLOPS 値

• メモリアクセス性能は相対的に低下– バンド幅はあまり大きくなっていない– PCI バス経由でコプロセッサとして使う場合は,特に顕著

  メモリネックを軽減できるアルゴリズムが性能向上の鍵

Page 6: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

6

• 行列乗算 C:=C+AB

– 演算量に比べ,データ量は O(1/N)

– キャッシュをうまく使うことで,メモリネックを軽減可能

行列乗算を効率的に使えれば,一般のアルゴリズムも高速化可能( LAPACK の基本的な考え方)

Level-3 BLAS の利用

= ×+C A BCデータ量: O(N 2)演算量:   O(N 3)

※行列ベクトル積( y := y + Ax)では,データ量・演算量ともにO(N 2)

Page 7: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

7

本研究の目的

• 長方行列の特異値分解アルゴリズムを CSX600 を利用して高速化する

• 既存のアルゴリズムをそのまま使用せず,行列乗算をなるべく効率的に使う形で CSX600 向けに最適化する

• 性能評価を行い,更なる高速化に向けての課題を明らかにする

Page 8: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

8

2 .   CSX600 のアーキテクチャと性能

• CSX600 チップ– 1 個の主プロセッサ– 96 個の演算専用プロセッサ

• 64 ビット• 倍精度 2 演算 / サイクル• 128B レジスタファイル• 6KB SRAM

– 250MHz で動作– ピーク性能: 48GFLOPS

• ClearSpeed Advance ボード– 2 個の CSX600 プロセッサ– 1GB DRAM– PCI-X バスにより PC 本体と接続– ピーク性能: 96GFLOPS

Page 9: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

9

• Software Development Kit– コンパイラ:  Cn 言語によるチップ内並列プログラミング– デバッガ– シミュレータ

• CSXL ライブラリ– ClearSpeed Advance ボード用の BLAS– 行列データを PC の主メモリ上に置いてコール– PC ⇔ ボード間の転送はライブラリ内で実行– 公称性能: DGEMM (行列乗算)で sustained 50GFLOPS– 現状では非常に制約が多い

• 使用可能なルーチンは DGEMM と DGETRF のみ• DGEMM では, M , N , K 448 ≧ でないと動かない

• CSFFT ライブラリ

CSX600 の利用環境

今回はこれを利用

Page 10: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

10

CSXL DGEMM の性能 (1)

• サイズパラメータのうち 2 個が 450 の場合

– 性能は最大でも 11GFLOPS 程度– 他の 2 個が 450 の場合でも,ほぼ同じ結果

0

10000

20000

30000

40000

50000

1000 2000 3000 4000 5000 6000

A, B 非転置A B 非転置, 転置

性能

(M

FL

OP

S)

+= ×AC BM

N K

・ M = K = 450

・ 1000 ≦ N 6000≦

CSX600 の性能が活かせない

N

Page 11: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

11

CSXL DGEMM の性能 (2)

• サイズパラメータのうち 1 個のみが 450 の場合

– M = N が大きい場合,性能は 40GFLOPS 以上– 他の 2 個が大きい場合でも,ほぼ類似の性能

0

10000

20000

30000

40000

50000

1000 2000 3000 4000 5000 6000

A, B 非転置A B 非転置, 転置

性能

(M

FL

OP

S)

+= ×AC B

M

N K

・ K = 450

・ 1000 ≦ M = N 6000≦

性能を引き出すには,サイズパラメータのうち少なくとも 2 個を大きい値にとる必要あり

N

Page 12: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

12

3 .  長方行列の特異値分解アルゴリズム

n×n 上三角行列 R

二重対角行列 B

B の特異値・特異ベクトル( B と R の特異値は同

じ)

R の左特異ベクトル

二重対角化 (8/3)n3

特異値分解   O(n2) ~ O(n3)

逆変換  2n3 ~ 4n3

m×n 密行列 A

R の右特異ベクトル

A の左特異ベクトル

A の右特異ベクトル

QR 分解  A=QR 2mn2

= Q の乗算  4mn2

Page 13: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

13

M >> N の場合の実行時間

• M = 40000 の場合

0

50

100

150

200

250

N=1000 N=2000

Qの乗算逆変換特異値分解

二重対角化QR分解

実行時間

(秒)

環境・ Xeon 3.2GHz

・ g77 -O3 + Intel MKL

各部分のアルゴリズム(詳細は後述)・ QR 分解: ブロック化 + 再帰的 QR

・ 二重対角化: Bischof + 村田法・ 特異値分解: 分割統治法

QR 分解と Q の乗算の時間が支配的

Page 14: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

14

4 .   CSX600 向けの高速化手法

• QR 分解と Q の乗算– 行列乗算を効率的に利用できるようアルゴリズムを変更– CSXL で実行

• 二重対角化および逆変換– 二重対角化は Bischof のアルゴリズムと村田法を利用– CSXL は利用しない( CPU のみで実行)

• 二重対角行列の特異値分解– 行列乗算中心のアルゴリズムである分割統治法を利用– LAPACK の DBDSDC を利用( CSXL が使える部分は使う)

高速化の方針

Page 15: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

15

ハウスホルダー変換による QR 分解

ハウスホルダー変換による列の消去

上三角化と QR 分解

H1 A = ( I – t1 y1 y1T ) A

= A(1)

A(1)A

Hn ・・・ H2 H1 A = A(n)

・・・

A(2) A(n) = R

A = H1 H2 ・・・ Hn A(n) = QR

level-2 BLAS

CSXL を使えない

Page 16: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

16

複数のハウスホルダー変換の合成

Compact WY representation

Hn ・・・ H2 H1 = ( I – tn yn ynT ) ・・・ ( I – t2 y2 y2

T )( I – t1 y1 y1T )

= I – Yn Tn YnT

ただし, Yn = [ y1 | y2 | ・・・ | yn]  ( m×n 行列)

      Tn :  n×n 下三角行列

× ×I – × ×I –・・・ × ×I –=

複数のハウスホルダー変換の作用を,行列乗算としてまとめて実行可能

Page 17: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

17

QR 分解における行列乗算の利用法 Ⅰ単純なブロック化( LAPACK で使用)

H1 H2 H3

H3H2H1= I – Y1T1Y1T

I – Y1T1Y1T I – Y2T2Y2

T I – Y3T3Y3T

分解 分解 分解更新 更新

•ブロックの QR 分解は level-2 BLAS

•演算量: L ( ブロック幅 ) << n のとき 2mn2

•CSXL を使うには L 450 ≧ ⇒ level-2 BLAS の演算量の増加

L

Page 18: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

18

QR 分解における行列乗算の利用法 Ⅱ再帰的 QR 分解

(I – YL TL YLT )

×(I – YR TR YRT )

= I – Y T YT

I – YR TR YRTI – YL TL YL

T

分解 更新 分解 合成

I – Y’L T’L Y’LT

I – YL TL YLT

•ほぼ全ての演算が行列乗算•演算量: 3mn2

Page 19: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

19

QR 分解における行列乗算の利用法 Ⅲ本研究で採用した方法

I – Y1T1Y1T I – Y2T2Y2

T I – Y3T3Y3T

分解 分解 分解更新 更新

•ほぼ全ての演算が行列乗算•演算量:Ⅰ (2mn2) とⅡ (3mn2) の中間•ブロック幅 L を適切に選ぶことで,他の2方法より高速になる可能性がある

I – Y1 T1 Y1T

L

Page 20: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

20

Q の乗算

Ⅰ (単純なブロック化)・Ⅲ(本研究で採用した方法)の場合

Q = ( I – Yn/L Tn/L Yn/LT ) ・・・ (I – Y1 T1 Y1

T )

× ×I – ・・・

•行列サイズの大きいⅡの方が CSXL の性能を引き出せる•Ⅰ ・Ⅲの方が使用するメモリの量が少ない

× ×I –L

Ⅱ (再帰的 QR 分解)の場合Q = I – Y T YT

× ×I –n

Page 21: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

21

5 .  性能評価

• Xeon 3.2GHz ,メモリ 2GB• g77 -O3 + Intel Math Kernel Library• ClearSpeed Advance ボード

評価環境

• [-0.5,0.5] の一様乱数を要素とする m×n 乱数行列の特異値分解• 10000 ≦ m 40000≦ , 1000 ≦ n 3000≦

評価例題

• ClearSpeed ボードでの 3 種の QR 分解法の性能比較• 特異値分解全体の ClearSpeed ボードによる高速化効果• 精度評価

評価項目

Page 22: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

22

ClearSpeed ボードでの 3 種の QR 分解法の性能比較

実行時間

(秒)

0

10

20

30

40

50

60

70

80

90

100

110

120

130

140

I II III III

Qの乗算

QR分解

L=500 L=500 L=1000

m = 10000 , n = 3000

0

20

40

60

80

100

120

140

160

180

200

220

240

260

280

I II III IIIL=500 L=500 L=1000

m = 20000 , n = 3000

•方法Ⅰは QR 分解が極めて遅い•方法Ⅱは Q の乗算が最高速•方法Ⅲは L を適切に選ぶことで,全体として最高速になる

Page 23: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

23

特異値分解全体の ClearSpeed ボードによる高速化効果

0

10

20

30

40

50

60

70

80

90

MKL CS MKL CS

Qの乗算

逆変換

特異値分解

二重対角化

QR ( Ⅲ )分解 方法

実行時間

(秒)

m = 10000

n = 1000 n = 2000

0

50

100

150

200

250

MKL CS MKL CS

m = 40000

n = 1000 n = 2000

•QR 分解は最大で 2倍程度高速化•Q の乗算は最大で 5倍程度高速化•特異値分解全体としては最大で 2.3倍高速化

Page 24: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

24

m , n による加速率の変化

10000

20000

3000040000

10002000

30000

0.5

1

1.5

2

2.5

加速率

m

n 0

5000

10000

15000

20000

25000

30000

35000

40000

1000 2000 3000

QR分解Qの乗算

n

性能

(M

FLO

PS

特異値分解全体の加速率 n による性能変化( m=30000 )

加速率は m, n が大きくなるほど増大する•m / n の増加: 特異値分解全体に対して CSXL を使える部分の割合が増加•n の増加  :  QR 分解・ Q の乗算の部分における CSXL の性能が向上

     ただし, CSXL を使わない部分( R の特異値分解)の演算量も増加

Page 25: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

25

精度評価

1.00E-13

1.00E-12

1.00E-11

1.00E-10

10000 20000 30000 40000 10000 20000 30000 40000 10000 20000 30000

MKL

CS

∥U

VT –

A∥ F

∥UTU

– I∥

F

1.00E-13

1.00E-12

1.00E-11

1.00E-10

10000 20000 30000 40000 10000 20000 30000 40000 10000 20000 30000

左特異ベクトルの直交性 残差

m :n

:1000 2000 3000

m :n

:1000 2000 3000

•左特異ベクトルの直交性,残差とも CS の方が精度が悪い•悪化の程度は一桁以下

Page 26: 長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化

26

6 .  まとめと今後の課題

• ClearSpeed Advance ボードと CSXL を用いて,長方行列向け特異値分解の高速化を行った

• QR 分解のアルゴリズムを行列乗算を効果的に使う形に改良することで, ボードによる高速化の効果を高めた

• 特異値分解全体では, 40000×2000 程度の行列においてボードを使うことで 2.3 倍の高速化が得られた

• 行列の規模が大きくなるほど高速化が期待できる

本研究のまとめ

今後の課題• より大規模な行列で性能評価• SDK の使用による高速化• 他の行列計算アルゴリズムへの CSX600 の適用