icde2015 勉強会 新井担当分
TRANSCRIPT
ICDE2015勉強会
Multicore Triangle Computations Without Tuning
J. Shun (CMU) & K. Tangwongsan (Mahidol U., Thailand)
新井 淳也
NTT
1
概要
• 並列 triangle counting アルゴリズムの提案• 厳密アルゴリズムと、それを拡張した近似アルゴリズムの2つ
• 近似アルゴリズムの話は割愛
• Cache-oblivious
• CPU キャッシュサイズやキャッシュラインサイズを与えなくても効率的にキャッシュを使用できる
• 並列度やキャッシュミス回数を理論的に分析
• 約60億エッジのグラフの処理を厳密解なら1.5分以下、近似解なら10秒以下で完了• 物理40コア× Hyper-Threading のマシンを使用
• 近似解の誤差は0.4%
2
Triangle Counting
• グラフに含まれる三角形を数える
•数えるとグラフの性質が分かる (cf. クラスタ係数)
3
三角形は2つ
Latapy のアルゴリズム
•逐次処理で良い性能を示すことが知られているtriangle counting アルゴリズム
4※図は論文から引用
Latapy のアルゴリズム
•隣接頂点間で隣接頂点の積集合を求める
5
𝐴+[𝑣] は 𝑣 の隣接頂点集合
intersect(𝐴+[0], 𝐴+[3]) = {1}
intersect(𝐴+[4], 𝐴+[3]) = {1}
• intersect の実装は2通り考えられる: merge-based, hash-based
• 論文では両方分析・評価しているが、このスライドでは merge-based のみ説明
※図は論文から引用
提案アルゴリズム
実行時の挙動を Parallel Cache Complexity モデルで分析
6
1. 並列化:parallel for
※並列化のための変更はこれだけ
Sort
2. Cache-oblivious なアルゴリズムで基本的操作を実装
Filter
Scan
Sort & merge
※図は論文から引用
Parallel Cache Complexity モデル
•用語• Work: 操作の数
• Depth: クリティカルパスの長さ
• Cache complexity: キャッシュミスの回数
•基本的な並列操作
7
Work Depth Cache complexity
scan 𝑂(𝑛) 𝑂(log 𝑛) scan(𝑛) = 𝑂(𝑛
𝐵)
filter scan と同じ (scan を用いて実装可能)
sort 𝑂(𝑛 log𝑛) 𝑂(log3/2 𝑛) sort(𝑛) = 𝑂(𝑛
𝐵log𝑀/𝐵
𝑛
𝐵)
merge 𝑂(𝑛 + 𝑚) 𝑂 log 𝑛 +𝑚 scan(𝑛 + 𝑚)
挙動の分析
8
Sort𝑂(𝑉 log𝑉) work, 𝑂(log3/2 𝑉) depth,
𝑂 sort 𝑉 cache misses
隣接リストへのアクセス𝑂(𝑉) cache misses
配列アクセス𝑂(𝐸) work & cache misses
Filter𝑂(𝐸) work, 𝑂(log𝐸) depth, scan(𝐸) cache misses
Scan𝑂(𝐸) work, 𝑂(log𝐸) depth, 𝑂 scan 𝐸 cache misses
Sort & merge (merge-based intersection)𝑂 𝐸 log𝐸 + 𝑂(𝐸3/2) work, 𝑂 log3/2 𝐸 + 𝑂 log𝐸 depth,
𝑂 sort 𝐸 + 𝑉 + 𝑂 𝐸3/2 𝐵 cache misses
アルゴリズム全体では 𝑶(𝑬𝟑/𝟐) work, 𝑶 log𝟑/𝟐 𝑬 depth, 𝑶 𝑬 + 𝑬𝟑/𝟐 𝑩 cache misses
※図は論文から引用
評価• スケーラビリティ: 40コア×HT 環境で逐次性能比 22~50x 高速化
• 既存手法より高速• 逐次性能の比較では1~2倍、並列性能の比較では2~9倍
9
既存逐次アルゴリズム
既存並列アルゴリズム
並列分散処理基盤
提案手法
※図は論文から引用
10