ICDE2015 勉強会 新井担当分
- 2. 概要
• 並列 triangle counting アルゴリズムの提案
• 厳密アルゴリズムと、それを拡張した近似アルゴリズムの2つ
• 近似アルゴリズムの話は割愛
• Cache-oblivious
• CPU キャッシュサイズやキャッシュラインサイズを与えなくても効率的にキャッ
シュを使用できる
• 並列度やキャッシュミス回数を理論的に分析
• 約60億エッジのグラフの処理を厳密解なら1.5分以下、
近似解なら10秒以下で完了
• 物理40コア× Hyper-Threading のマシンを使用
• 近似解の誤差は0.4%
2
- 5. Latapy のアルゴリズム
• 隣接頂点間で隣接頂点の積集合を求める
5
𝐴+
[𝑣] は 𝑣 の隣接頂点集合
intersect(𝐴+[0], 𝐴+[3]) = {1}
intersect(𝐴+[4], 𝐴+[3]) = {1}
• intersect の実装は2通り考えられる:
merge-based, hash-based
• 論文では両方分析・評価しているが、
このスライドでは merge-based のみ説明
※図は論文から引用
- 6. 提案アルゴリズム
実行時の挙動を Parallel Cache Complexity モデルで分析
6
1. 並列化:
parallel for
※並列化のための
変更はこれだけ
Sort
2. Cache-oblivious
なアルゴリズムで
基本的操作を実装
Filter
Scan
Sort & merge
※図は論文から引用
- 7. 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. 挙動の分析
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
※図は論文から引用
- 9. 評価
• スケーラビリティ: 40コア×HT 環境で逐次性能比 22~50x 高速化
• 既存手法より高速
• 逐次性能の比較では1~2倍、並列性能の比較では2~9倍
9
既存逐次アルゴリズム
既存並列アルゴリズム
並列分散処理基盤
提案手法
※図は論文から引用