半正定値計画問題に 対する 行列 補完理論の高速実装

55
1 半半半半半半半半半半半半 半半半半半半半半半半半 半半半半半半 半半 半半半半半半 半半 2012/12/15 SOTA: 半半半半半半半半半半半半半半 「」 半半半半半半半半半半半半半半半半半半半半半

Upload: duncan-donovan

Post on 02-Jan-2016

25 views

Category:

Documents


3 download

DESCRIPTION

半正定値計画問題に 対する 行列 補完理論の高速実装. 東京 工業大学 数理・計算科学 専攻 山下 真. この研究は笹川研究助成の助成を受けています. 行列 補完の簡単な 例. 半正定値計画 問題 ( SemiDefinite Program, SDP) の例. Notation. 内積計算に必要なのは青の要素のみ これだけ で計算できれば高速化できる. 半正定値制約がある. 組合せ最適化のときにあらわれる疎構造. 格子ネットワーク ( p,q ) 上の最大クリーク問題 内積計算に必要な要素のみを青で表示 ほとんど がゼロ要素⇒ こういった特徴を利用して高速化 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 半正定値計画問題に 対する 行列 補完理論の高速実装

1

半正定値計画問題に対する行列補完理論の高速実装

東京工業大学 数理・計算科学専攻   山下 真

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

この研究は笹川研究助成の助成を受けています

Page 2: 半正定値計画問題に 対する 行列 補完理論の高速実装

2

行列補完の簡単な例

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Notation

内積計算に必要なのは青の要素のみこれだけで計算できれば高速化できる

半正定値制約がある

半正定値計画問題 (SemiDefinite Program, SDP) の例

Page 3: 半正定値計画問題に 対する 行列 補完理論の高速実装

3

組合せ最適化のときにあらわれる疎構造

格子ネットワーク (p,q) 上の最大クリーク問題 内積計算に必要な要素のみを青で表示

ほとんどがゼロ要素⇒こういった特徴を利用して高速化 半正定値条件を取り入れる⇒行列補完

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 4: 半正定値計画問題に 対する 行列 補完理論の高速実装

4

行列補完の簡単な例の続き

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

黒なしで計算

黒を適切に補完

Page 5: 半正定値計画問題に 対する 行列 補完理論の高速実装

5

今日の話の方向性

大規模な半正定値計画問題に対して行列補完を利用して高速に求解

行列補完自体は SDPA-C に実装済み今回のメインは SDPA-C の改良にあ

たる話の内容の多くは、行列補完について

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 6: 半正定値計画問題に 対する 行列 補完理論の高速実装

6

インデックス

1. 半正定値計画問題の標準形と主双対内点法2. 行列補完理論と主双対内点法3. 実装の高速化

1. 行列補完計算の改善2. Schur complement マルチスレッド化3. 主探索方向マルチスレッド化

4. 数値実験結果

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 7: 半正定値計画問題に 対する 行列 補完理論の高速実装

7

半正定値計画問題の主な応用

制御理論組合せ最適化問題の緩和ロバスト最適化量子化学における電子構造計算量子計算

( 物理状態は半正定値行列で表現できるため )

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 8: 半正定値計画問題に 対する 行列 補完理論の高速実装

8

半正定値計画問題の標準形(SemiDefinite Programs, SDP)

主問題と双対問題で定義

行列補完理論で本質的なのは双対側

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 9: 半正定値計画問題に 対する 行列 補完理論の高速実装

9

主双対内点法の特徴

主問題と双対問題を同時に求解多項式時間アルゴリズム多くのソフトウェア

SDPA, CSDP, SeDuMi, SDPT3, …

主問題の変数が密行列Schur 補完行列がボトルネック

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 10: 半正定値計画問題に 対する 行列 補完理論の高速実装

10

主双対内点法の枠組み

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

実行可能領域

最適解

中心パス

探索方向 ステップ長

Page 11: 半正定値計画問題に 対する 行列 補完理論の高速実装

11

中心パスの点と探索方向計算

最適性条件

中心パスの点

探索方向 の計算はニュートン法に基づく

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 12: 半正定値計画問題に 対する 行列 補完理論の高速実装

12

探索方向計算の続き

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

変形していくと

まとめると

変数を左に集めて

Page 13: 半正定値計画問題に 対する 行列 補完理論の高速実装

13

行列補完理論で計算式が変わる部分

Schur 補完方程式

主問題側変数の計算

行列補完理論では密行列を避けて疎行列 ( 下三角 ) で計算する

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 14: 半正定値計画問題に 対する 行列 補完理論の高速実装

14

インデックス

1. 半正定値計画問題の標準形と主双対内点法2. 行列補完理論と主双対内点法3. 実装の高速化

1. 行列補完計算の改善2. Schur complement マルチスレッド化3. 主探索方向マルチスレッド化

4. 数値実験結果

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 15: 半正定値計画問題に 対する 行列 補完理論の高速実装

15

行列補完理論と主双対内点法

変数行列の疎構造に基づいてコレスキー分解Schur 補完行列を効率的に計算できる

詳しくは、以下の論文Exploiting sparsity in semidefinite programming via matrix

completion I: general frameworkFukuda, Kojima, Murota, NakataSIAM J. Optim, 2000

Exploiting sparsity in semidefinite programming via matrix completion II: implementation and numerical resultsNakata, Fujisawa, Fukuda, Kojima, MurotaMath. Program. B, 2003

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 16: 半正定値計画問題に 対する 行列 補完理論の高速実装

16

行列補完理論のポイント

どれだけの要素が必要か⇒ Aggregate Sparsity Patternどう行列を分解するか ⇒ Chordal Graph & 極大ク

リークどう補完するか ⇒ 2012/12/15 SOTA: 「最適化の理論と応用」研究部

Page 17: 半正定値計画問題に 対する 行列 補完理論の高速実装

17

Aggregate Sparsity Pattern

双対側の変数行列の非ゼロパターン

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1

5

3

2

4

67

グラフ表現

Page 18: 半正定値計画問題に 対する 行列 補完理論の高速実装

18

Chordal Graph

グラフが Chordal であるとは、 4 以上のサイクルに弦 (chord)があること

ここで、極大 Clique は(Clique は、すべての頂点間に枝がある部分のこと )

Point :: 極大 Clique に沿って、行列が分解される

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1

5

3

2

4

67

length4

length5

1

5

3

2

4

67

Chordal 化

Page 19: 半正定値計画問題に 対する 行列 補完理論の高速実装

19

行列の分解

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1

5

3

2

4

67

青は Aggregate, 赤は Chordal で追加

Grone et al. 1984

Page 20: 半正定値計画問題に 対する 行列 補完理論の高速実装

20

Chordal Graph と Cholesky 分解

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1

5

3

2

4

67

1

5

3

2

4

67

Page 21: 半正定値計画問題に 対する 行列 補完理論の高速実装

21

行列の分解

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1

5

3

2

4

67

青は Aggregate, 赤は Chordal で追加

黒の要素をどうする?

Grone et al. 1984

Page 22: 半正定値計画問題に 対する 行列 補完理論の高速実装

22

行列補完の簡単な例

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1 2 3

正定値正則転置 正則

Page 23: 半正定値計画問題に 対する 行列 補完理論の高速実装

23

行列補完のステップ1

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

1

5

3

2

4

67

Page 24: 半正定値計画問題に 対する 行列 補完理論の高速実装

24

行列補完のステップ2

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

下三角行列

これらを使うと、以下のように補完される

以下を満たすことを計算で確認できる

Page 25: 半正定値計画問題に 対する 行列 補完理論の高速実装

25

行列補完の性質

補完行列は密だが逆行列が疎構造を持つ

.

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 26: 半正定値計画問題に 対する 行列 補完理論の高速実装

26

Cholesky 分解に似た分解

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Point::

Page 27: 半正定値計画問題に 対する 行列 補完理論の高速実装

27

双対側は通常の Cholesky 分解

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Sparse Cholesky 分解を適用

Page 28: 半正定値計画問題に 対する 行列 補完理論の高速実装

28

行列補完と主双対内点法

主双対内点法のボトルネックSchur 補完行列主問題側の探索方向

密行列を避けて疎行列で計算する

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 29: 半正定値計画問題に 対する 行列 補完理論の高速実装

29

Schur 補完行列の計算式の変更

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 30: 半正定値計画問題に 対する 行列 補完理論の高速実装

30

主問題側探索方向の計算

各列ごとに計算

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 31: 半正定値計画問題に 対する 行列 補完理論の高速実装

31

SDPA-C

行列補完理論を実装した SDP ソルバー SDPA(SemiDefinie Programming Algorithm) – Completion version

SDPA従来の主双対内点法を実装http://sdpa.sourceforge.net/ で公開Debian/Ubuntu/Linux Mint パッケージ

$ sudo apt-get install sdpa libsdpa-dev sdpamソースコードは git でバージョン管理4年分の全部の記録を管理(複数サーバでの数値実験に便利)

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA と SDPA-C でソースを比較すると1万9千行のうち1万行ぐらい違う

Page 32: 半正定値計画問題に 対する 行列 補完理論の高速実装

32

インデックス

1. 半正定値計画問題の標準形と主双対内点法2. 行列補完理論と主双対内点法3. 実装の高速化

1. 行列補完計算の改善2. Schur complement マルチスレッド化3. 主探索方向マルチスレッド化

4. 数値実験結果

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 33: 半正定値計画問題に 対する 行列 補完理論の高速実装

33

SDPA-C と SDPA の比較

SDPA-C 6.2.1 SDPA 7.3.8 SDPA-C 7.3.8

行列補完理論 ○ × ○

Sparse Cholesky 分解 自作ルーチン MUMPS CHOLMOD&MUMPS

Schur マルチスレッド

× ○ ○

dX マルチスレッド × × ○

Callable Library × ○ ○

Matlab 対応 × ○ ○

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C 6.2.1 SDPA 7.3.8 SDPA-C 7.3.8

行列補完理論 ○ × ○

Sparse Cholesky 分解 自作ルーチン MUMPS CHOLMOD&MUMPS

Schur マルチスレッド

× ○ ○

dX マルチスレッド × × ○

Callable Library × ○ ○

Matlab 対応 × ○ ○

Page 34: 半正定値計画問題に 対する 行列 補完理論の高速実装

34

行列分解計算式の検討

.

.

Point

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 35: 半正定値計画問題に 対する 行列 補完理論の高速実装

352012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 36: 半正定値計画問題に 対する 行列 補完理論の高速実装

362012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 37: 半正定値計画問題に 対する 行列 補完理論の高速実装

372012/12/15 SOTA: 「最適化の理論と応用」研究部会

これと同じことを極大クリークの情報で帰納法を行えば一般的にできる

クリークの情報にアクセスできる数値計算ライブラリ

Page 38: 半正定値計画問題に 対する 行列 補完理論の高速実装

38

Sparse Cholesky 分解のライブラリ

CHOLMODアルゴリズムは supernodal 分解行列演算のマルチスレッドで性能が伸びにくい行列補完理論に採用

MUMPSa MUltifrontal Massively Parallel sparse direct Solverアルゴリズムは multiple frontal method行列演算のマルチスレッドで高速化されるSchur complement 方程式の求解に採用

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 39: 半正定値計画問題に 対する 行列 補完理論の高速実装

39

Supernode 分解

.Sparse Cholesky 分解を効率的に行える

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

supernode からクリークの情報が得られる

Page 40: 半正定値計画問題に 対する 行列 補完理論の高速実装

402012/12/15 SOTA: 「最適化の理論と応用」研究部会

内点法の前処理

Page 41: 半正定値計画問題に 対する 行列 補完理論の高速実装

41

数式改善による高速化

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C6.2.0 SDPA-C7.3.8

Schur 要素計算 4205.70秒 2094.03秒Schur Cholesky 185.36秒 161.03秒

dX の計算 316.00秒 242.51秒

その他 22.22秒 17.93秒

合計時間 4729.28秒 2515.50秒

時間は短縮されたが、まだまだ遅い

マルチスレッドによる並列計算で高速化

格子上の最大クリーク問題クリーク数 438, 平均 29.89, 最大 59, 合計 13090

1.88倍高速化

Page 42: 半正定値計画問題に 対する 行列 補完理論の高速実装

42

Schur 補完行列のマルチスレッド化

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

各列の計算は独立しているスレッド割り当て⇒終わったスレッドが次の列へ

1

1

2

2

3

3

4

4

このままだとスレッドが衝突する

Page 43: 半正定値計画問題に 対する 行列 補完理論の高速実装

43

スレッドの衝突

行列積担当の BLAS もマルチスレッドそのままマルチスレッド化すると(4コアのとき)

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

BLAS スレッド

Schur 補完行列

スレッド 1

スレッド 2

スレッド 3

スレッド 4

列計算スレッド

スレッドが増えすぎてスレッドの切り替えに時間を取られてしまう

Page 44: 半正定値計画問題に 対する 行列 補完理論の高速実装

44

スレッドの衝突回避

Schur 補完行列計算直前に BLAS のスレッドを無効化

Schur 補完行列計算終了後に BLAS のスレッドを戻す

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

BLAS スレッド

Schur 補完行列

列計算スレッド

スレッド 1

スレッド 2

スレッド 3

スレッド 4

スレッド 1

スレッド 2

スレッド 3

スレッド 4

Page 45: 半正定値計画問題に 対する 行列 補完理論の高速実装

45

dX 計算のマルチスレッド化

各列ごとに計算

各列ごとにスレッドで並列計算今回も BLAS のスレッドを無効化

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 46: 半正定値計画問題に 対する 行列 補完理論の高速実装

46

マルチスレッドの効果

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C6.2.0(1)

SDPA-C7.3.8(1)

SDPA-C7.3.8(2)

SDPA-C7.3.8(4)

Schur 要素計算 4205.70秒 2094.03秒 1170.37秒1.78倍

731.98秒2.86倍

Schur Cholesky 185.36秒 161.03秒 85.24秒1.88倍

47.77秒3.37倍

dX の計算 316.00秒 242.51秒 131.03秒1.85倍

83.54秒2.90倍

その他 22.22秒 17.93秒 23.88秒 25.86秒

合計時間 4729.28秒 2515.50秒 1410.52秒1.78倍

889.15秒2.82倍

最大クリーク問題( )の数字はスレッド数

5.31倍高速化

Page 47: 半正定値計画問題に 対する 行列 補完理論の高速実装

47

インデックス

1. 半正定値計画問題の標準形と主双対内点法2. 行列補完理論と主双対内点法3. 実装の高速化

1. 行列補完計算の改善2. Schur complement マルチスレッド化3. 主探索方向マルチスレッド化

4. 数値実験結果

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

Page 48: 半正定値計画問題に 対する 行列 補完理論の高速実装

48

数値実験環境とテスト問題CPU Xeon X5365(3.0GHz), Memory 48GB, RedHat Linuxテスト問題 1

格子ネットワーク (p,q) で生成した SDP 緩和最大クリーク問題

最大カット問題

テスト問題 2量子化学における Spin Glass の基底状態エネルギー計算DIMACS challenge の torusg-3-15 のタイプ

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

↑ただし、前処理をする↑

青が格子の情報で生成される , 赤が変数

Page 49: 半正定値計画問題に 対する 行列 補完理論の高速実装

49

テスト問題の Sparsity Pattern

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

最大カット問題

SpinGlass(3D)

クリーク数 1607, 平均 8.04, 最大 26, 合計 12924

クリーク数 591, 平均 29.97, 最大 773, 合計 17714

Page 50: 半正定値計画問題に 対する 行列 補完理論の高速実装

50

最大クリーク問題 (p=400,q=10)

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C6.2.0

SDPA7.3.8(4)

SDPA-C7.3.8(4)

SeDuMi1.3

Schur 9314.34 262.04 1431.69 -

Cholesky 2601.04 403.28 248.55 -

dX 734.41 13151.10 175.24 -

その他 31.37 12342.98 47.65 -

合計 12681.16 26159.40 1903.13 61861.30

SDPA-C が非常に高速に最大クリーク問題を解く

クリーク数 438, 平均 29.89, 最大 59, 合計 13090

SeDuMi: http://sedumi.ie.lehigh.edu/

Page 51: 半正定値計画問題に 対する 行列 補完理論の高速実装

51

最大カット問題 (p=500,q=10)

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C6.2.0

SDPA7.3.8(4)

SDPA-C7.3.8(4)

SeDuMi1.3

Schur 105.25 16.17 317.56 -

Cholesky 502.43 214.43 226.06 -

dX 61.21 3254.05 315.73 -

その他 14.38 3063.60 17.46 -

合計 683.27 6548.26 876.81 95356.20

入力行列が単純なため、マルチスレッドのオーバーヘッドが大きい

SDPA の Schur も非常に高速

クリーク数 1607, 平均 8.04, 最大 26, 合計 12924

Page 52: 半正定値計画問題に 対する 行列 補完理論の高速実装

52

SpinGlass(p=15)

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C6.2.0

SDPA7.3.8(4)

SDPA-C7.3.8(4)

SeDuMi1.3

Schur 565.11 7.99 261.40 -

Cholesky 39.47 6.64 11.19 -

dX 496.16 126.90 252.24 -

その他 209.26 194.87 35.570 -

合計 1306.00 336.40 560.40 27898.1

クリーク数 591, 平均 29.97, 最大 773, 合計 17714

SDPA-C7.3.8 は 6.2.0よりも高速ただし SDPA は、さらに高速

Page 53: 半正定値計画問題に 対する 行列 補完理論の高速実装

53

SpinGlass(p=25)

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

SDPA-C6.2.0

SDPA7.3.8(4)

SDPA-C7.3.8(4)

SeDuMi1.3

Schur 35314.96 220.19 11856.50 -

Cholesky 3681.44 520.39 945.49 -

dX 45238.37 11846.59 11594.76 -

その他 23267.71 13436.50 516.45 -

合計 107502.48 26023.67 24913.20 実験なし

クリーク数 3173, 平均 29.50, 最大 1798, 合計 93609

このサイズでは SDPAより SDPA-C のほうが高速

Page 54: 半正定値計画問題に 対する 行列 補完理論の高速実装

54

SpinGlass まとめ

2012/12/15 SOTA: 「最適化の理論と応用」研究部会

p n クリーク数 平均サイズ 最大サイズ SDPA7.3.8 SDPA-C7.3.8

10 1000 155 25.69 294 11.85 20.77

15 3375 191 29.97 773 336.40 560.40

18 5832 1118 28.13 913 1522.60 2136.88

20 8000 1737 25.75 1080 3726.03 4552.10

25 15625 3173 29.50 1798 26023.67 24913.20

計算時間の単位は秒

SDPA-C のほうが計算時間の上昇が緩やか大きい問題ほど SDPA-C が有利

ちなみに、 CPU温度は Core i7 3770K で室温約 15度の場合通常 約 30度 , 最大 約 80度 , SDPA 約 70度 , SDPA-C 約 60度

Page 55: 半正定値計画問題に 対する 行列 補完理論の高速実装

55

まとめ

行列補完理論の数式を改善して高速化大きい問題ほど効果が高くなる

マルチスレッドでボトルネックを高速化

ただし、性能は疎構造に強く依存

2012/12/15 SOTA: 「最適化の理論と応用」研究部会