580 likes | 825 Views
半正定値計画問題に 対する 行列 補完理論の高速実装. 東京 工業大学 数理・計算科学 専攻 山下 真. この研究は笹川研究助成の助成を受けています. 行列 補完の簡単な 例. 半正定値計画 問題 ( SemiDefinite Program, SDP) の例. Notation. 内積計算に必要なのは青の要素のみ これだけ で計算できれば高速化できる. 半正定値制約がある. 組合せ最適化のときにあらわれる疎構造. 格子ネットワーク ( p,q ) 上の最大クリーク問題 内積計算に必要な要素のみを青で表示 ほとんど がゼロ要素⇒ こういった特徴を利用して高速化
E N D
半正定値計画問題に対する行列補完理論の高速実装半正定値計画問題に対する行列補完理論の高速実装 東京工業大学 数理・計算科学専攻山下 真 この研究は笹川研究助成の助成を受けています SOTA:「最適化の理論と応用」研究部会
行列補完の簡単な例 半正定値計画問題(SemiDefinite Program, SDP)の例 Notation 内積計算に必要なのは青の要素のみ これだけで計算できれば高速化できる 半正定値制約がある SOTA:「最適化の理論と応用」研究部会
組合せ最適化のときにあらわれる疎構造 • 格子ネットワーク(p,q)上の最大クリーク問題 • 内積計算に必要な要素のみを青で表示 • ほとんどがゼロ要素⇒こういった特徴を利用して高速化 • 半正定値条件を取り入れる⇒行列補完 SOTA:「最適化の理論と応用」研究部会
行列補完の簡単な例の続き 黒を適切に補完 黒なしで計算 SOTA:「最適化の理論と応用」研究部会
今日の話の方向性 • 大規模な半正定値計画問題に対して行列補完を利用して高速に求解 • 行列補完自体は SDPA-Cに実装済み • 今回のメインは SDPA-C の改良にあたる • 話の内容の多くは、行列補完について SOTA:「最適化の理論と応用」研究部会
インデックス • 半正定値計画問題の標準形と主双対内点法 • 行列補完理論と主双対内点法 • 実装の高速化 • 行列補完計算の改善 • Schur complement マルチスレッド化 • 主探索方向マルチスレッド化 • 数値実験結果 SOTA:「最適化の理論と応用」研究部会
半正定値計画問題の主な応用 • 制御理論 • 組合せ最適化問題の緩和 • ロバスト最適化 • 量子化学における電子構造計算 • 量子計算(物理状態は半正定値行列で表現できるため) SOTA:「最適化の理論と応用」研究部会
半正定値計画問題の標準形(SemiDefinite Programs, SDP) • 主問題と双対問題で定義 • 行列補完理論で本質的なのは双対側 SOTA:「最適化の理論と応用」研究部会
主双対内点法の特徴 • 主問題と双対問題を同時に求解 • 多項式時間アルゴリズム • 多くのソフトウェア • SDPA, CSDP, SeDuMi, SDPT3, … • 主問題の変数が密行列 • Schur補完行列がボトルネック SOTA:「最適化の理論と応用」研究部会
主双対内点法の枠組み 実行可能領域 探索方向 ステップ長 中心パス 最適解 SOTA:「最適化の理論と応用」研究部会
中心パスの点と探索方向計算 • 最適性条件 • 中心パスの点 • 探索方向 の計算はニュートン法に基づく SOTA:「最適化の理論と応用」研究部会
探索方向計算の続き 変数を左に集めて 変形していくと まとめると SOTA:「最適化の理論と応用」研究部会
行列補完理論で計算式が変わる部分 • Schur補完方程式 • 主問題側変数の計算 • 行列補完理論では密行列を避けて疎行列(下三角)で計算する SOTA:「最適化の理論と応用」研究部会
インデックス • 半正定値計画問題の標準形と主双対内点法 • 行列補完理論と主双対内点法 • 実装の高速化 • 行列補完計算の改善 • Schur complement マルチスレッド化 • 主探索方向マルチスレッド化 • 数値実験結果 SOTA:「最適化の理論と応用」研究部会
行列補完理論と主双対内点法 • 変数行列の疎構造に基づいてコレスキー分解 • 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 SOTA:「最適化の理論と応用」研究部会
行列補完理論のポイント • どれだけの要素が必要か⇒ Aggregate Sparsity Pattern • どう行列を分解するか ⇒ Chordal Graph & 極大クリーク • どう補完するか⇒ SOTA:「最適化の理論と応用」研究部会
Aggregate Sparsity Pattern • 双対側の変数行列の非ゼロパターン 2 1 グラフ表現 例 4 3 5 7 6 SOTA:「最適化の理論と応用」研究部会
Chordal Graph • グラフが Chordalであるとは、4以上のサイクルに弦(chord)があること • ここで、極大 Clique は(Clique は、すべての頂点間に枝がある部分のこと) • Point :: 極大 Clique に沿って、行列が分解される length4 length5 Chordal化 2 2 1 1 4 4 3 3 5 5 7 7 6 6 SOTA:「最適化の理論と応用」研究部会
行列の分解 青はAggregate, 赤は Chordalで追加 2 1 4 3 Grone et al. 1984 5 7 6 SOTA:「最適化の理論と応用」研究部会
Chordal Graph と Cholesky分解 2 2 1 1 4 4 3 3 5 5 7 7 6 6 SOTA:「最適化の理論と応用」研究部会
行列の分解 青はAggregate, 赤は Chordalで追加 2 1 4 3 Grone et al. 1984 5 7 黒の要素をどうする? 6 SOTA:「最適化の理論と応用」研究部会
行列補完の簡単な例 1 2 3 正則転置 正則 正定値 SOTA:「最適化の理論と応用」研究部会
行列補完のステップ1 2 1 4 3 5 7 6 SOTA:「最適化の理論と応用」研究部会
行列補完のステップ2 下三角行列 これらを使うと、以下のように補完される 以下を満たすことを計算で確認できる SOTA:「最適化の理論と応用」研究部会
行列補完の性質 • 補完行列は密だが逆行列が疎構造を持つ • . SOTA:「最適化の理論と応用」研究部会
Cholesky分解に似た分解 Point:: SOTA:「最適化の理論と応用」研究部会
双対側は通常のCholesky分解 Sparse Cholesky分解を適用 SOTA:「最適化の理論と応用」研究部会
行列補完と主双対内点法 • 主双対内点法のボトルネック • Schur補完行列 • 主問題側の探索方向 • 密行列を避けて疎行列で計算する SOTA:「最適化の理論と応用」研究部会
Schur補完行列の計算式の変更 SOTA:「最適化の理論と応用」研究部会
主問題側探索方向の計算 • 各列ごとに計算 SOTA:「最適化の理論と応用」研究部会
SDPA-C • 行列補完理論を実装したSDPソルバー • SDPA(SemiDefinieProgramming Algorithm) –Completion version • SDPA • 従来の主双対内点法を実装 • http://sdpa.sourceforge.net/ で公開 • Debian/Ubuntu/Linux Mint パッケージ$ sudo apt-get install sdpalibsdpa-devsdpam • ソースコードは gitでバージョン管理4年分の全部の記録を管理(複数サーバでの数値実験に便利) SDPA と SDPA-Cで ソースを比較すると 1万9千行のうち 1万行ぐらい違う SOTA:「最適化の理論と応用」研究部会
インデックス • 半正定値計画問題の標準形と主双対内点法 • 行列補完理論と主双対内点法 • 実装の高速化 • 行列補完計算の改善 • Schur complement マルチスレッド化 • 主探索方向マルチスレッド化 • 数値実験結果 SOTA:「最適化の理論と応用」研究部会
SDPA-CとSDPAの比較 SOTA:「最適化の理論と応用」研究部会
行列分解計算式の検討 • . • . • Point SOTA:「最適化の理論と応用」研究部会
これと同じことを極大クリークの情報で帰納法を行えば一般的にできるこれと同じことを極大クリークの情報で帰納法を行えば一般的にできる クリークの情報にアクセスできる数値計算ライブラリ SOTA:「最適化の理論と応用」研究部会
Sparse Cholesky分解のライブラリ • CHOLMOD • アルゴリズムは supernodal分解 • 行列演算のマルチスレッドで性能が伸びにくい • 行列補完理論に採用 • MUMPS • a MUltifrontalMassively Parallel sparse direct Solver • アルゴリズムは multiple frontal method • 行列演算のマルチスレッドで高速化される • Schur complement 方程式の求解に採用 SOTA:「最適化の理論と応用」研究部会
Supernode分解 • . • Sparse Cholesky分解を効率的に行える supernodeから クリークの情報が得られる SOTA:「最適化の理論と応用」研究部会
内点法の前処理 SOTA:「最適化の理論と応用」研究部会
数式改善による高速化 格子上の最大クリーク問題 クリーク数 438, 平均29.89, 最大59, 合計 13090 1.88倍高速化 時間は短縮されたが、まだまだ遅い マルチスレッドによる並列計算で高速化 SOTA:「最適化の理論と応用」研究部会
Schur補完行列のマルチスレッド化 各列の計算は独立している スレッド割り当て⇒終わったスレッドが次の列へ 4 3 2 1 2 1 4 3 このままだとスレッドが衝突する SOTA:「最適化の理論と応用」研究部会
スレッドの衝突 • 行列積担当の BLAS もマルチスレッド • そのままマルチスレッド化すると(4コアのとき) スレッド1 スレッドが増えすぎてスレッドの切り替えに時間を取られてしまう スレッド2 Schur補完行列 スレッド3 スレッド4 列計算スレッド BLASスレッド SOTA:「最適化の理論と応用」研究部会
スレッドの衝突回避 • Schur補完行列計算直前にBLASのスレッドを無効化 • Schur補完行列計算終了後にBLASのスレッドを戻す スレッド1 スレッド1 スレッド2 スレッド2 Schur補完行列 スレッド3 スレッド3 スレッド4 スレッド4 列計算スレッド BLASスレッド SOTA:「最適化の理論と応用」研究部会
dX計算のマルチスレッド化 • 各列ごとに計算 • 各列ごとにスレッドで並列計算 • 今回もBLASのスレッドを無効化 SOTA:「最適化の理論と応用」研究部会
マルチスレッドの効果 5.31倍高速化 ( )の数字はスレッド数 最大クリーク問題 SOTA:「最適化の理論と応用」研究部会
インデックス • 半正定値計画問題の標準形と主双対内点法 • 行列補完理論と主双対内点法 • 実装の高速化 • 行列補完計算の改善 • Schur complement マルチスレッド化 • 主探索方向マルチスレッド化 • 数値実験結果 SOTA:「最適化の理論と応用」研究部会
数値実験環境とテスト問題 • CPU Xeon X5365(3.0GHz), Memory 48GB, RedHat Linux • テスト問題1格子ネットワーク(p,q)で生成したSDP緩和 • 最大クリーク問題 • 最大カット問題 • テスト問題2量子化学におけるSpin Glassの基底状態エネルギー計算DIMACS challenge の torusg-3-15のタイプ ↑ただし、前処理をする↑ 青が格子の情報で生成される, 赤が変数 SOTA:「最適化の理論と応用」研究部会
テスト問題の Sparsity Pattern 最大カット問題 クリーク数 1607, 平均8.04, 最大26, 合計 12924 SpinGlass(3D) クリーク数 591, 平均29.97, 最大773, 合計 17714 SOTA:「最適化の理論と応用」研究部会
最大クリーク問題(p=400,q=10) クリーク数 438, 平均29.89, 最大59, 合計 13090 SeDuMi: http://sedumi.ie.lehigh.edu/ SDPA-C が非常に高速に最大クリーク問題を解く SOTA:「最適化の理論と応用」研究部会