超大規模半正定値計画問題に対する 高性能汎用ソルバの開発と評価

超大規模半正定値計画問題に対する
高性能汎用ソルバの開発と評価
数理計画問題(最適化問題)と2015年予想(目標)
• 非常に応用が広範(企業、社会、公共政策) 高性能なソルバーを
作ること自体が最適化問題
• センサーデータによる最適化問題の複雑&巨大化
• 半正定計画問題(SDP)と混合整数計画問題(MIP)が2大注目数理計
画問題
• 汎用ソルバーの必要性(個別の問題に対する仮定やチューニング
は効果が低い)
• 入力は疎データと密データの混合
– 疎データ:多数のCPUコアによる処理(浮動小数点演算性能に非依存:密デー
タへ変換)  GPU 系による処理
– 密データ:GPU 系による処理
– 理論的性能限界等からボトルネック箇所を特定
– 数値演算能力とメモリバンド等のトレードオフ関係を把握
– 計算量とデータ移動量の正確な推定、疎性やサイズなどのデータ特性と性能
値の見極め
• 計算量とポストペタスパコンでの想定:
– 計算量O(n3)  数百万程度, O(n log n)  100億以上, O(n)  100兆以上
大
上層:NP 困難な最適化アルゴリズムの実行
小
1. MIP(混合整数計画問題)の場合: 0-1 整数変数の数 = n で計算量はおよそ O(2n)
2. 前処理による変数の削除と並列計算の適用(CPUコア中心の大規模スレッド並
列:分枝カット法の適用)
3. データ量は 105 以下(整数変数の数)
4. 施設配置問題、集合被覆(分割)問題、スケジューリング問題などの最適化問題
中層:多項式時間最適化アルゴリズムの実行
計
算
量
1. SDP(半正定値計画問題)の場合: n = 行列の大きさ, m = 制約式の数で計算量は
およそ O(n3 + m3)
2. 疎性の追求と前処理さらに並列計算の適用(CPUコア中心の大規模スレッド並
列が中心だが、今後は CPU + GPU による高速化)
3. データ量は 108 以下(非負変数の数) : 106 以下(制約条件数)
4. グラフ分割、センサーネットワーク、サポートベクターマシンなどの最適化問題
デ
ー
タ
量
下層:グラフ解析アルゴリズムの実行を想定
小
1. ダイクストラ法(1対全最短路問題:ヒープ付き)の場合: n = 点数, m = 枝数で計算
量はおよそ O((n + m)log n)
2. グラフ探索の局所的な評価では優先キュー(ヒープ木)を用いる⇒実行時間、メ
モリ消費量が安定的(CPUコア中心の大規模スレッド並列が中心だが、高速ス
トレージ技術による超大規模グラフ処理)
3. データ量は 1012~14 以下(グラフの点数と枝数)
4. 最短路計算、ネットワーク内での各点の重要度を推定。各点の周辺、及び広域
内における影響(情報の伝播力)を計算
大
応用分野
グラフ
事象同士の関係
交通ネットワーク
(Relationships)
ソーシャルネットワーク
サイバーセキュリティ
バイオインフォマティクス
脳科学
防災計画策定
Twitter
ソーシャルネットワーク
6,160万点 & 14億7千万枝
全米道路ネットワーク
2,400万点 & 5800万枝
Step2
グラフ解析
解析結果
Step1
Step3
分析と理解
• 並列グラフ探索 (幅優先探索)
• 最適化 (最短路, 最大フロー, 最小費用フロー)
• クラスタリング (グラフ分割, コミュニティ抽出)
ニューラル・ネットワーク @ Human Brain Project
890億点 & 100 兆枝
サイバーセキュリティ
150億/日 のアクセスログ
京スパコン: 65536ノード
Graph500: 5524GTEPS
Human Brain Project
Graph500 (Huge)
Symbolic
Network
45
Graph500 (Large)
40
log2(m)
Graph500 (Medium)
35
Graph500 (Small)
Graph500 (Mini)
30
Graph500 (Toy)
USA-road-d.USA.gr
25
USA-road-d.LKS.gr
USA-road-d.NY.gr
20
15
20
Android タブレット
Tegra3 1.7GHz 4コア: 1GB RAM
0.15GTEPS: 64.12MTEPS/W
25
30
log2(n)
35
40
45
TEPS(traversed edges per second)
•
•
•
•
•
A: 0.57, B: 0.19
C: 0.19, D: 0.05
concurrent search,
optimization (single source shortest path)
edge-oriented (maximal independent set)
•
•
–
–
–
Follow-ship network 2009
User j
User i
•
–
–
•
–
–
(i, j)-edge
The Green Graph500 list on Nov. 2013
http://green.graph500.org
• Measures power-efficient using TEPS/W ratio
• Results on various system such as TSUBAMEKFC Cluster and Android mobiles
Big Data category
TSUBAME-KFC
6.72 MTEPS/W (44.01 GTEPS)
Small Data category
SONY Xperia-A-SO-04E
153 MTEPS/W (0.48 GTEPS)
内点法アルゴリズムの並列計算による超大規模半正定値計画問題の解決
藤澤CREST + 遠藤 CREST
半正定値計画問題(SDP)は現在最も注目されている数理最適化問題の一つ
•
•
•
•
•
•
組合せ最適化、データマイニング、量子化学,制御分野など非常に幅広い応用を持っている
高速かつ安定した反復解法である内点法アルゴリズムが存在している
SDPARA は現在開発&公開を行なっている大規模な SDP に対する並列ソルバー
内点法アルゴリズムには2つの大きなボトルネックが存在 ⇒ 大規模な並列化
• ELEMENTS ⇒ 線形方程式系の行列(SCM)の生成 : メモリバンド幅依存
• CHOLESKY ⇒ SCMに対するコレスキー分解 : 倍精度浮動小数点演算依存
ELEMENTS :ノード内の NUMA 関係の情報を読み取り、自動的に最適な processor
affinity や memory interleaving の設定を行う ⇒ MPI + OpenMP による2段階並列計算
⇒ 東工大 TSUBAME 2.0 1360ノード(16,320 CPU cores) での高いスケーラビリティ
CHOLESKY : 通信と計算のオーバーラップ&多数 GPU による並列計算 ⇒
東工大 TSUBAME 2.5 4080 GPUs(NVIDIA K20X) での大規模分散並列化 ⇒
浮動小数点演算1.713 PFlops の達成と世界最大規模の SDP(233万制約超)を初めて
解くことに成功した
SDPが注目される理由とは?





主双対内点法などのアルゴリズムによって多項式時間で最適解を求めるこ
とができる(つまり高速で安定したアルゴリズムが存在する)
SDP は線形計画問題(LP), 凸二次計画問題や二次錐計画問題(SOCP) な
どを含んだより大きな凸計画問題の枠組である
非凸最適化問題に対する強力な緩和値を導き出すことができる. そのため
SDP を繰り返して解くことによって非凸最適化問題(例えば双線形行列方程
式(BMI) など) を扱える可能性を持っている
組合せ最適化問題, 整数計画問題, ノルムなどを用いた配置問題, システム
と制御, ロバスト最適化, 量子化学など非常に多くのSDP の応用が存在する
(つまり非常に多彩な応用分野を持っている).
多くのSDP に対するソフトウェアが開発され, インターネットより公開されてい
る. つまり公開されているソフトウェアで実際に大きな問題を解くことができる
21世紀の線形計画問題として大きな期待を受けている
構造最適化問題
量子化学
組合せ最適化問題
システムと制御
データマイニング
SDP(SemiDefinite Programming)
Primal
Dual
SDPA 1.x(1995) could solve SDPs
with n = m = 20 ~30 (very small size!!)
Primal-Dual Interior-Point Methods
疎で大規模なSDPにおいては
Schur complement equation がネック
Bdz = g
k
k Ä1
Bij = Ai èX Aj (Y )



(i; j = 1; . . . ; m)
B は密行列と疎行列の両方に成り得る
上記の連立線形方程式を非常に効率良く解く必要
がある
Bdz = g は コレスキー分解 Cholesky
factorization や反復法 Conjugate gradient で
解くのが一般的
Exploitation of Sparsity
in Schur complement matrix

F
 1
F
 2
F
 3
The SDPA automatically selects a formula when
computing each row of B by estimating computational
costs of F1, F2 and F3
The major bottleneck parts (80% - 90% of total execution time)
• ELEMENTS : Computation of the SCM
 Memory Access-intensive
 Time-complexity:
n : matrix size
m: # of constraints
or
• CHOLESKY : Cholesky factorizations of the SCM
 Compute-intensive
 Time-complexity:
ELEMENTS-bound SDP problems
m < n (not m >> n), and Fully Dense SCM
torus
quantum
CHOLESKY-bound SDP problems
m >> n, and Fully Dense SCM
Comb. Opt.
Quad. assignment
Fast computation of sparse SCM is future work.
e.g.) The sensor network location problem and The polynomial optimization problem
ULIBC を用いた NUMA を考慮した高速化
ELEMENTS : Computation of the SCM
• NUMA アーキテクチャ
– Non-uniform Memory Access
– CPU ソケットとローカルメモリの対により構成されるため、コアとメモリ
の距離が一定ではなく、アクセスコストが不均一
– メモリアクセスの局所性の向上により高い性能を示す
• 【先行研究】
NUMA の考慮にはこの組合せが重要だが存在しない
– 計算機トポロジを検出するためのライブラリ群
– CPUアフィニティ & ローカルメモリ確保のためのライブラリ群
– メモリアクセスの局所性を高めるためのスケジューリング方法
• 【提案】高速化に重要な機能を ULIBCライブラリ で実現
– トポロジ検出 + CPUアフィニティ & ローカルメモリ確保
– C 言語のみで実装、関数で提供しており、汎用的な実装が可能
– 4種類の適用例で高速化を達成、性能評価を行う
NUMA アーキテクチャの構成
• 4-way Intel Xeon E5-4640 (Sandybridge-EP)
– 4 (CPU ソケット数)
– 8 (CPU ソケットあたりの物理コア数)
– 2 (物理コアあたりのスレッド数)
NUMAノード
最大
4 x 8 x 2 = 64 スレッド
(ハイパースレッディング)
ローカルメモリへのアクセス(アクセスコスト小)
NUMAノード
CPUソケット(16 論理コア)
ローカルメモリ
リモートメモリへのアクセス(アクセスコスト大)
データアクセスが不均一であるため
• 並列時の偏りが生じるため、並列効率を向上することが難しい
• 本来の性能を予想することが難しい
NUMA の計算機トポロジの検出
• 4-way Intel Xeon E5-4640 (Sandybridge-EP)
– 4 (CPU ソケット数)
– 8 (CPU ソケットあたりの物理コア数)
– 2 (物理コアあたりのスレッド数)
NUMAノード
Package ID
Core ID
SMT ID
(0,1,2,3)
(0,1,…,7)
(0,1)
ローカルメモリへのアクセス(アクセスコスト小)
NUMAノード
CPUソケット(16 論理コア)
ローカルメモリ
リモートメモリへのアクセス(アクセスコスト大)
• 計算機トポロジの検出
Processor ID : 各論理コアに対応した ID
Package ID
: 各CPUソケット(一部例外あり)に対応した ID
Core ID
: CPU ソケット内の物理コアに対応した ID
SMT ID
: 物理コア内のスレッドに対応した ID
• Linux デバイスファイル
– /sys/devices/system/*
– /proc/cpuinfo
• APCID(CPUID 命令)
メモリアクセスパターンを考慮したアフィニティ設定
◯ Scatter アフィニティ … 使用するコアをできるだけ分散する
0, 4, 8, ...
1, 5, 9, ...
2, 6, 10, ...
3, 7, 11, ...
◯ Compact アフィニティ … 使用するコアをできるだけ集中する
0, 1, 2, ...
32, 33, 33, ...
16, 17, 18, ...
48, 49, 50, ...
◯ Compact+ アフィニティ … Compact での優先度を「ソケット>論理コア」
0, 1, 2, ...
16, 17, 18, ...
8, 9, 10, ...
32, 33, 34, ...
•
Parallel Computation for ELEMENTS
ELEMENTS :ノード内の NUMA 関係の情報を読み取り、自動的に最適な processor
affinity や memory interleaving の設定を行う ⇒ MPI + OpenMP による2段階並列計算⇒
東工大 TSUBAME 2.0 1360ノード(16,320 CPU cores) での高いスケーラビリティ
Automate configuration of CPU Affinity and memory allocation policy
Step1: Linux device files
Step2: Processor mapping table
Processor ID
Package ID
0
0
0
1
1
2
0
/sys/devices/system/*
Automate
detection
・・・
TSUBAME 2.0 HP node
Core
ID
Step3: thread−Processor assignment table
Thread
ID
Scatter
Compac
t
0
0
0
1
1
1
2
2
2
2
4
・・・
Local rank=0
Processor cores
RAM0
0, 2, 4, 6, 8, 10
Processor cores
RAM1
GPU1
1, 3, 5, 7, 9, 11
Local rank=1
GPU2
Scatter-type Affinity
distributes OpenMP threads as evenly
as possible across the entire system.
Compact-type Affinity
binds the (n+1)-th OpenMP thread in a
free-thread context as close as possible to
the thread context in which the n-th
OpenMP thread was bound.
Electronic4 : 量子化学系の問題
8604
n = 33,178
(行列の大きさ)
m = 76,554
(制約式の数)
14,116,348
(非零要素の総数)
8604
ブロック数 = 22
2754 x 4
対角ブロック : 694
Electronic5 : 量子化学系の問題
4965
n = 19,640
(行列の大きさ)
m = 36,795
(制約式の数)
6,731,930
(非零要素の総数)
4965
ブロック数 = 22
1575 x 4
対角ブロック : 490
CPU time for Electronic4
• the memory interleaving is effective.
• the parameter set “scatter and interleaving” is fastest.
Scalability for Electronic4 and Electronic5
• high efficiency (75.9% for Electronic4)
• higher efficiency when solving an SDP problem larger
than Electronic4 because the efficiency for Electronic4
is higher than that for Electronic5.
Strong Scaling
based on 128 nodes
Efficiency
for large problems
CHOLESKY :
Cholesky factorization of Schur complement matrix
• For symmetric and positive semidefinite matrix
• Time complexity is O(m3)
• Ex. Matrix (1.48million x 1.48 million) ≒ 1.0 Exa(1018) Flops
• Our implementation is based on pdpotrf function
(ScaLAPACK library) and HPL Library for TSUBAME 2.0
• ScaLAPACK and HPL library employ
the 2-D block-cyclic distribution for
Cholesky factorization
– In ELEMENTS , we directly computes all
elements of the 2-D block-cyclic
distribution of the SCM
Data Decomposition in Cholesky
• The dense matrix B(m x m) is
uniformly distributed with 2D
Block-Cyclic distribution with
block size nb(= 2048)
• CHOLESKY algorithm consists of
mb(=⌈m/nb⌉) steps.
• MPI processes conceptually
composes a 2D grid(ex. 6 (=2 x 3),
Matrix distribution on
6 (=2x3) processes
m
4080(=68 x 60) processes)
• Can use 4080GPUs in parallel!!
nb=2048
ScaLAPACK の Cholesky 分解のブロック分割
並列計算を行う
• The k-th step proceeds as follows:  We need mb(=⌈m/nb⌉) steps.
1. Diagonal block factorization
2. Panel factorization
3. Panel broadcast and transposition
4. Update:  the most computation-intensive part 
B‘ = B‘– L x L‘  We need call DGEMM function on GPU once.
Matrix distribution on
6 (=2x3) processes
Each process has a
“partial-matrix”
L’
B
N
B’
L
B'  B'L  L'
nb
For Accelerating CHOLESKY by using massively parallel GPUs, we need optimization
techniques to overlap computation, PCI-Express communication and MPI communication.
TSUBAME 2.0 & 2.5 Specification
Specification
CPU
Intel Westmere EP (Xeon X5670, L2 Cache: 256 KB, L3:
12MB) 2.93 GHz processors, 12 CPU Cores (24 cores with
Hyper Threading) x 2 sockets per 1 node (24 CPU Cores)
RAM
54 GB
OS
SUSE Linux Enterprise 11 (Linux kernel: 2.6.32)
# of Total Nodes
1466 nodes (We used up to 1360 nodes)
Network Topology
Full-Bisection Fat-Tree Topology
Network
Voltaire / Mellanox Dual-rail QDR Infiniband
(40Gbps x2 = 80 Gbps)
GPGPU
Three NVIDIA Fermi M2050 (or Kepler 20X) GPUs, CUDA
C/C++ Compiler
Intel icc 11.1 & gcc 4.3.4
MPI
MVAPICH 1.5.1
TSUBAME 2.5 System Configuration
1360 nodes, 2720 CPUs,
4080 GPUs
We have challenged to solve largest SDPs in 2013!!
Quadratic Assignment
Problem
QAP(sko49) : 2013
n = 2,752,649
(matrix size)
m = 2,339,331
(# of constraints)
nnz = 28,078,376
(# of nonzero
elements)
○ CHOLESKY occupied over 95% of the entire computation time
◯ 1360 nodes, 2720 CPUs, 4080 GPUs (TSUBAME 2.5 in TITECH)
◯ Performance of Cholesky Fac. : 4.26 Exa flops / 2487 sec. ≒ 1.713 PFLOPS
Parallel Algorithm of Cholesky Factorization
Version 1: No overlapping
Update: B‘ = B‘– L x Lt(Lt )
• Diagonal block factorization  Panel factorization  Panel
broadcast and transposition 
• Update: Each process updates its own part of the rest matrix,
taking the corresponding part of L and Lt(trace of L). Then
B‘ = B‘– L x Lt(Lt ) is computed.
Parallel Algorithm of Cholesky Factorization
Version 2: GPU computation and PCIe communication are overlapped
• Diagonal block factorization  Panel factorization  Panel
broadcast and transposition 
• Update: Each process updates its own part of the rest matrix,
taking the corresponding part of L and Lt(trace of L). Then
B‘ = B‘– L x Lt(Lt ) is computed.
Parallel Algorithm of Cholesky Factorization
Version 3: GPU computation, PCIe communication, and MPI
communication are overlapped
• Diagonal block factorization  Panel factorization  Panel
broadcast and transposition 
• Update: Each process updates its own part of the rest matrix,
taking the corresponding part of L and Lt(trace of L). Then
B‘ = B‘– L x Lt(Lt ) is computed.
Parallel Algorithm of Cholesky Factorization
Version 4: GPU computation, PCIe communication, MPI
communication, and panel factorization are overlapped
Producer of panel L
• Diagonal block factorization  Panel factorization  Panel
broadcast and transposition 
• Update: Each process updates its own part of the rest matrix,
taking the corresponding part of L and Lt(trace of L). Then
B‘ = B‘– L x Lt(Lt ) is computed.
Performance of CHOLESKY on TSUBAME2.0 & 2.5
Quadratic assignment problems (QAP)
org: Version 3 & new: Version 4
Performance of CHOLESKY on TSUBAME2.0 & 2.5
Quadratic assignment problems (QAP)
1.713PFLOPS(DP)
with 4080GPUs!!
大規模グラフ解析:CREST終了時の目標と想定
超大規模ネットワークに対する探索アルゴリズムとクラスタリングアルゴリズム
最短路(中心性), 最大フロー, PageRank, グラフ分割, 中心性, その他
数理計画問題(SDP, MIP)
グラフクラスタリング, 高速グラフレイアウト, グラフUI
数百万頂点〜数兆頂点、数億枝〜数百兆枝からなる超大規模なグラフ解析
242頂点 数PB以上のワーキングデータセット
グラフ解析:例:890億個のニューロンとその接続100兆枝  ペタバイト級のス
トア領域:(2023年:エクサスパコン)
数百万人の被災者の避難経路の計算では数千万頂点のグラフ(1スレッドあたりのメモ
リ要求量1Gbytes)に対して、同時に数百万スレッド単位で各被災者毎の最短路計算と
各点の重要度判定
5億頂点250億辺のグラフのインタラクティブな操作のための計算性能
ベクトル・スカラープロセッサから成る不均質でかつ分散共有メモリから成る大規
模並列環境における大規模グラフ処理:数百万スレッドまでスケールさせる
大規模グラフ処理を PGAS 言語 X10 を用いて一元的に記述
メモリ多階層を考慮して、高速性と省電力性を両立したアルゴリズムの確立
世界最高性能の最適化ソルバーの開発:密データと疎データの分離と多階層並列
(MPI , OpenMP, OpenACC等)及びアクセラレータ(GPU, MIC等)の活用