Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
論 文 データ工学と情報マネジメント論文特集
効率的なグラフ分析のための実行時並列リオーダリング*
新井 淳也†,††a) 塩川 浩昭††† 山室 健† 鬼塚 真††
岩村 相哲††††
Runtime Parallel Reordering for Efficient Graph Analysis∗
Junya ARAI†,††a), Hiroaki SHIOKAWA†††, Takeshi YAMAMURO†,Makoto ONIZUKA††, and Sotetsu IWAMURA††††
あらまし グラフ分析におけるメモリアクセスの局所性を向上させるため,頂点リオーダリングによってデータ配置を事前に最適化するアプローチが広く用いられている.しかしながら既存のアルゴリズムは効果的なオーダリングの生成に長い時間を要するため,リオーダリングと後続のグラフ分析を合計した全体の処理時間をむしろ増加させてしまうという問題がある.本論文において我々は全体の処理時間を短縮するための並列リオーダリングアルゴリズムである Rabbit Order を提案する.Rabbit Order は高い局所性と高速なリオーダリングを同時に達成するとともに,効率的な並列処理により高いスケーラビリティを示す.実験の結果,全体処理時間の観点で Rabbit Order は平均 2.2 倍グラフ分析を高速化することが確認された.
キーワード グラフ処理,並列処理,キャッシュ,リオーダリング,疎行列
1. ま え が き
Webグラフ,ソーシャルグラフ,タンパク質相互作
用ネットワークなどの実世界のグラフから知識を発見
するために,今やグラフ分析は科学と産業の両分野に
おいて欠かせない技術となっている.10億エッジを超
えるような大規模な実世界グラフの出現に伴い,特に
高速なグラフ分析が近年重要視されている [2]~[4].
グラフ分析の性能を低下させる主な要因の一つとし
て局所性の低いメモリアクセスとそれに伴うキャッシュ
ミスがある.実世界のグラフは事物間の非構造的で複
雑なつながりを表現しているため,その分析において
も不規則なアクセスパターンを生じる [5].例として,
図 1 (a)に示すグラフにおいて各頂点のデータが連続
†日本電信電話株式会社,武蔵野市Nippon Telegraph and Telephone Corporation, Musashino-
shi, 180–8585 Japan††大阪大学,吹田市
Osaka University, Suita-shi, 565–0871 Japan†††筑波大学,つくば市
University of Tsukuba, Tsukuba-shi, 305–8573 Japan††††北海道大学,札幌市
Hokkaido University, Sapporo-shi, 001–0021 Japan
a) E-mail: [email protected]
* 本論文は既発表論文 [1] を再編集したものである.DOI:10.14923/transinfj.2018DEP0010
したメモリ領域に格納されている状況を考える.代表
的な分析アルゴリズムである PageRankに見られるよ
うに,頂点を順に選択しその周辺のつながりを調査す
る処理は分析において一般的である.このとき,最初
に頂点 0とその隣接頂点である頂点 2, 4, 7 がアクセ
スされ,次に頂点 1 とその隣接頂点である 3, 6 がア
クセスされる.この時点までで頂点 0, 2, 4, 7, 1, 3, 6
に対応する頂点データが順にアクセスされたことにな
図 1 重み付きグラフとその隣接行列の例.グラフ (b) の点線はコミュニティ構造を示す.
302 電子情報通信学会論文誌 D Vol. J102–D No. 4 pp. 302–312 c©一般社団法人電子情報通信学会 2019
論文/効率的なグラフ分析のための実行時並列リオーダリング
るが,このようなアクセスはキャッシュミスを多発さ
せる.なぜならばここまで各頂点へのアクセスは一度
きりであり (低い時間的局所性),更にメモリ上で互い
に離れた要素にアクセスしている (低い空間的局所性)
ためである.キャッシュミスはメモリアクセスのため
の遅延を発生させるのみならず,マルチコアプロセッ
サにおけるコア間通信やメモリ帯域の飽和によって並
列グラフ処理のスケーラビリティに深刻な影響をもた
らすことが知られている [5].
局所性を向上させるため,さまざまなアプリケー
ションにおいてリオーダリングアルゴリズムが使用さ
れている [2], [6]~[9].リオーダリングによって頂点の
並び順,すなわち頂点 IDの割り当てを変更すること
により,グラフ分析アルゴリズムの実装を変更するこ
となくメモリアクセスの局所性を向上させることがで
きる.具体的には隣接頂点同士に近い ID番号を与え
ることで,分析アルゴリズムは直前の処理でアクセス
された頂点に繰り返しアクセスするようになり (高い
時間的局所性),更にそのデータはメモリ上で近傍に
存在するようになる (高い空間的局所性).図 1 (a)の
グラフに対するリオーダリング結果の例を図 1 (b)に
示す.このグラフにおいて頂点 0と 1及びぞれぞれに
隣接する接続関係を調べるとき,頂点 0, 1, 1, 0, 2, 3,
4が順番にアクセスされる.この場合頂点 0と 1が複
数回アクセスされており,またアクセス先である頂点
0–4はメモリ上の連続領域に格納されているため,時
間的・空間的局所性が向上している.実際に,既存研
究 [2], [10], [11]では前もってグラフをリオーダリング
しておくことによって PageRankと幅優先探索 (BFS)
を高速化している.
しかしながら,効果的なオーダリングを生成するた
めには長い計算時間を要する.そのため,リオーダリ
ングとグラフ分析を合わせた全体の処理時間はリオー
ダリングを用いない場合よりもむしろ増加してしまう
場合がある.実世界のグラフは時々刻々と構造を変化
させるため [12]リオーダリングは分析の実行時にその
都度実施されることが望ましいが,既存手法はそのよ
うな使用方法に適していない.
そこで本論文では,分析実行時のリオーダリングに
よる処理時間の短縮を可能にするため,新しいアルゴ
リズムである Rabbit Order を提案する.提案手法は
高い局所性と短いリオーダリング時間を二つのアプ
ローチによって両立する.すなわち,グラフの階層的
なコミュニティ構造を捉えることで局所性を向上させ
る階層コミュニティオーダリングと,並列処理による
グラフの縮約とコミュニティ検出でリオーダリング時
間を短縮する並列逐次集約である.リオーダリングを
含めた全体処理時間の観点で既存手法はグラフ分析の
高速化効果をほぼ示さない一方,提案手法は平均 2.2
倍高速化することが評価実験において示された.我々
の貢献は次の 3点である.
( 1) 高い局所性: Rabbit Orderは既存手法と比
較して同等以上にキャッシュミスを削減する効果的な
オーダリングを生成する.
( 2) 高速なリオーダリング: Rabbit Orderは高
いスケーラビリティを示し,48スレッドにて 10億エッ
ジのグラフを 10数秒でリオーダリング可能である.
( 3) 広範な評価:七つの既存リオーダリングアル
ゴリズムと様々なグラフ分析アルゴリズムを用いた比
較によって手法の性質を明らかにした.
2. 前 提 知 識
本節では本論文の前提となる知識と本論文で扱う問
題の定義を説明する.
2. 1 グラフ分析のメモリアクセスパターン
グラフ分析アルゴリズムが示すメモリアクセスパ
ターンは様々であるが,多くの分析アルゴリズムは疎
行列ベクトル乗算 (sparse matrix-vector multiplica-
tion; SpMV )によって表現され [13],それらは共通し
たアクセスパターンを生じる.SpMVとは密ベクトル
xと疎行列Aについてその積 y = Axを求める計算で
ある.分析において多くの場合 Aは重み付き隣接行列
である.疎行列の表現形式としては compressed sparse
row (CSR)が広く用いられている [7], [14], [15].CSR
は疎行列中の非ゼロ値とその位置を三つの配列,すな
わちインデックス配列AI,列配列 AC,値配列AV に
よって表現する.AI [i]は行列の i + 1行目に対応する
データの AC と AV における開始位置を示し,AC と
AV の要素はそれぞれ列番号とその列に存在する値を
表す.例として図 1 (c)の行列に対応する CSR表現を
図 2 に示す.CSRを用いた SpMVはアルゴリズム 1
アルゴリズム 1 疎行列ベクトル乗算 (SpMV)
入力: n× n CSR 行列 A = (AI , AC , AV ),長さ n のベクトル x.出力: y = Ax.1 for i = 0 to n− 1 do
2 y[i]← 0
3 for k = AI [i] to AI [i + 1]− 1 do
4 y[i]← y[i] + AV [k] x[AC [k]]
303
電子情報通信学会論文誌 2019/4 Vol. J102–D No. 4
図 2 図 1 (c) の疎行列を表現する CSR.
に示すように計算される.このアルゴリズムは x以外
の配列に対しては連続アクセスを行うが,x に対して
は AC を通じた間接参照により不規則なアクセスを行
う (4行目).そのため SpMVは x に対するメモリア
クセスの局所性が低い.
2. 2 本論文が扱う問題
本論文ではグラフ分析に広く見られる SpMV型のア
クセスパターンを想定し,その局所性をリオーダリング
によって向上させる.すなわち,V = {0, 1, . . . , n−1}を正の整数を IDとするn個の頂点の集合,E ⊆ V ×V
をエッジの集合,G = (V, E)をグラフ,Aを Gの隣
接行列とするとき,アルゴリズム 1 で示される SpMV
において発生するキャッシュミスを削減するような頂
点 IDの置換 π : V → V を生成する.
更に,本論文ではグラフ分析の実行時にリオーダリ
ングを行うことによる高速化を目指す.具体的には,
グラフ分析アルゴリズム及びグラフ G を与えられた
とき,キャッシュミスの削減によりリオーダリングと
グラフ分析を合わせた全体処理時間を短縮する.
3. Rabbit Order
本節では Rabbit Order を特徴づける二つのアプ
ローチ,すなわち階層コミュニティオーダリングと並
列逐次集約について説明する.
3. 1 階層コミュニティオーダリング
実世界のグラフはコミュニティ構造を含むことが知
られている [16].コミュニティとは密に接続された頂
点の集合である.密に接続された頂点は分析処理にお
いて相互に頻繁なメモリアクセスを発生させる.その
ため,コミュニティ内の頂点を連続したメモリ領域に
配置することで高い空間的・時間的局所性を得ること
ができる.エッジは隣接行列において非ゼロ値として
表現されることから,各コミュニティに含まれる頂点
を連続して配置することによって隣接行列の対角上に
密なブロックが形成される.図 1 (b)のグラフではそ
のようなオーダリングを行っているため,図 1 (d)の
灰色部分で示すようにコミュニティ1, 2のそれぞれに
対応する密なブロックが隣接行列に生じている.
アルゴリズム 2 Rabbit Orderの概要入力: グラフ G = (V, E)
出力: 新しいオーダリングを表す置換 π : V → V
1 dendrogram ← CommunityDetection()
2 return OrderingGeneration(dendrogram)
3 function CommunityDetection()
4 V を頂点次数順にソート5 for each u ∈ V do
6 v ← ΔQ(u, v) を最大化する u の隣接頂点7 if ΔQ(u, v) > 0 then
8 u を v へ集約し,その操作を dendrogram に記録
9 return dendrogram
10 function OrderingGeneration(dendrogram)
11 new id ← 0
12 V を dendrogram における深さ優先探索訪問順にソート13 for each v ∈ V do
14 π[v]← new id; new id ← new id + 1
15 return π
ここから更に局所性を向上させるため,我々は実世
界のグラフにみられる階層的なコミュニティ構造に着
目した階層コミュニティオーダリングを提案する.階
層構造において各コミュニティはより密に接続された
内部コミュニティを含んでいる.例えば学生のソーシャ
ルネットワークには,学校,学年,クラスのように段
階的に密になる人間関係の階層が見られるはずである.
そのため,Rabbit Order は内部コミュニティの頂点
についても再帰的に連続した配置を行うことによって,
外側のコミュニティに対応するブロックの内部に一層
密なブロックを形成する.このようなオーダリングは
単に密なブロックを生成するのみならず,現代のプロ
セッサにおいて一般的な階層的キャッシュの効果的な
利用も期待できる.すなわち,小さく密な内部コミュ
ニティのデータを L1キャッシュに,その外側のコミュ
ニティのデータを L2, L3キャッシュに,というような
配置を自然に得ることができる.このように,階層コ
ミュニティオーダリングは高い局所性によりグラフ分
析の性能を向上させる.
アルゴリズム 2 に Rabbit Orderの概要を示す.階
層コミュニティオーダリングはコミュニティ検出とそ
れに基づくオーダリングの生成という二つのステッ
プから成る.まず CommunityDetection関数によ
りコミュニティの階層を抽出するとともに,それを表
現したデンドログラム (樹形図) を得る (1 行目).次
に OrderingGeneration 関数によりデンドログラ
ムから新しいオーダリングを得る (2 行目).Rabbit
Orderはどちらのステップにおいても並列処理を行い,
短時間でリオーダリングを完了する.なお入力された
304
論文/効率的なグラフ分析のための実行時並列リオーダリング
Gが対称な有向グラフでない場合,アルゴリズムの開
始前に各エッジについて反対方向のエッジを追加する
ことで対称な有向グラフに変換する.これはエッジの
向きを無視することでコミュニティ検出の品質が向上
するためである [16].次節以降ではコミュニティ検出
とオーダリング生成の詳細について説明する.
3. 2 コミュニティ検出
本節では逐次処理によるコミュニティ検出アルゴリ
ズムを説明したのち,その並列版,すなわち並列逐次
集約について述べる.
3. 2. 1 逐次処理アルゴリズム
階層コミュニティオーダリングに基づくリオーダ
リングを短時間で行うためには,効率的に階層的コ
ミュニティ構造を検出する必要がある.そこで Rabbit
Order は Modularity [16] に基づく逐次集約法 [3] と
呼ばれるテクニックを採用している.Modularity は
コミュニティ検出の品質を表す指標として最も有名な
ものの一つである.逐次集約法は密に接続され同じコ
ミュニティに分類されることが判明した頂点同士を直
ちに一つの頂点へと集約する操作を繰り返すことに
よって高い modularity を得る.コミュニティ検出が
進むにつれ集約によりグラフの頂点数が縮小するため,
計算コストを削減することができる.Rabbit Order
は集約の過程をコミュニティの階層構造の検出とみな
し,その構造をデンドログラムとして記録する.
逐次集約の具体的な手続きをアルゴリズム 2のCom-
munityDetection 関数に示す.処理は 3 ステップ
から成る:(i)集約元頂点の選択 (4, 5行目),(ii)集約
先頂点の決定 (6 行目),(iii) modularity が上昇する
ならば集約 (7, 8行目).ステップ (i)では頂点次数が
小さい順に頂点 uを選択する.次数順の選択は逐次集
約の計算コストを削減するためのヒューリスティクス
である [3].ステップ (ii)では頂点を集約した際に得ら
れるモジュラリティ上昇量ΔQ (式 1)を最大化する u
の隣接頂点 v を集約先頂点として選択する.
ΔQ(u, v) = 2
{wuv
2m− d(u)d(v)
(2m)2
}. (1)
ただし m は初期状態のグラフにおけるエッジの数,
wuv は頂点 uと vの間のエッジの重み,d(·)は頂点の重み付き次数 (接続されたエッジの重みの和)である.
初期状態においてエッジの重みは全て 1であるものと
する.もし ΔQ(u, v) > 0ならば,ステップ (iii)にお
いて uと v を集約する.集約後の頂点 v′ は uと v 両
図 3 コミュニティ検出及びそれと同時に行われるデンドログラム構築の例
方の重みを足したエッジをもつ.なおエッジ (u, v)と
(v, u) は区別されるため,v′ には重み wuv + wvu の
ループエッジが追加される.一方 modularity が上昇
しない場合,uをそのままグラフに残す.このように
グラフに残った頂点を本論文ではトップレベル頂点と
呼ぶ.トップレベル頂点はデンドログラムにおいて根
となる.図 3 に逐次集約による階層的コミュニティ
検出の例を示す.低次数頂点から頂点の集約を繰り返
すことによりグラフを縮約すると同時にデンドログラ
ムを構成する.最終的にトップレベル頂点 4 と 6 を
それぞれの代表点とするコミュニティ1 と 2 を得る.
Rabbit Order はこのように逐次集約によって頂点数
を減少させることで高速にコミュニティを検出する.
3. 2. 2 並列逐次集約
CommunityDetection関数は一見すると 5行目
の for文において各頂点の処理を複数のスレッドで行
うことにより容易に並列化可能であるように見える.
しかしながら,このナイーブな並列化は頂点の集約 (8
行目)における集約先頂点のエッジの編集及び集約元
頂点の削除で競合状態を生じる.同様に競合状態はデ
ンドログラムの更新においても発生する.小さいオー
バーヘッドでこのような問題を解決するための手段と
して多くのプロセッサは compare-and-swap (CAS)
などのアトミック命令を提供しているが,CAS がア
トミックに変更可能なデータサイズは限られる.
そこで軽量なアトミック命令を活用するため,Rab-
bit Order では遅延集約によって操作するデータサイ
ズを削減する.uを v へ集約することが決定されたと
き,遅延集約では v を代表点とするコミュニティに u
を登録する操作のみ行う.uと v の実際の集約は v が
集約元頂点として別の頂点へ集約されるときまで遅延
される.コミュニティへの登録に必要なデータの変更
305
電子情報通信学会論文誌 2019/4 Vol. J102–D No. 4
アルゴリズム 3 並列逐次集約によるコミュニティ検出入力: グラフ G = (V, E)
出力: トップレベル頂点の集合 Toplevel,及び atom と sibling で表現されるデンドログラム.
1 for each u ∈ V do
2 atom[u].degree ← d(u) � 重み付き次数3 atom[u].child ← INVALID ID � u にマージされた頂点4 sibling[u]← INVALID ID � 同じコミュニティに属する頂点5 dest[u]← u � u が所属するコミュニティ
6 Toplevel ← ∅ � トップレベル頂点の集合7 while 集約元として未選択の頂点が存在する do in parallel
8 u← 未選択の頂点のうち次数が最小のもの9 degreeu ← INVALID DEGREE � 集約不能を表す無効値を代入
10 AtomicSwap(degreeu, atom[u].degree) � u を集約不能に設定11 v ← FindBestDestination(u)
12 if ΔQ(u, v) ≤ 0 then � モジュラリティが向上しない場合13 atom[u].degree ← degreeu � 値の復元14 Toplevel ← Toplevel ∪ {u} � u はトップレベル頂点15 continue � 次の頂点へ
16 atomv ← atom[v]
17 if atomv.degree = INVALID DEGREE then � v は集約可能か18 sibling[u]← atomv.child � child の上書き前に値を移動19 atom′
v.degree ← atomv.degree + degreeu � 次数更新20 atom′
v.child ← u � 最後に集約された頂点として記録21 CAS: atom[v] = atomv なら atom[v]と atom′
v を入れ替え22 if CAS で値が設定された then
23 dest[u]← v � u は v へ集約された24 continue � 次の頂点へ
25 sibling[u]← INVALID ID � リトライのため元の値を復元26 atom[u].degree ← degreeu � リトライのため元の値を復元27 u を後でリトライする頂点として保存
28 リトライのため 27 行目で保存された頂点をそれぞれ集約
を最小限にすることでアトミック命令による実装が可
能となる.また,デンドログラムはこの登録操作の結
果構成されるデータ構造から復元する.
並列コミュニティ検出アルゴリズムをアルゴリズ
ム 3 に示す.最初に変数を初期化する (1–6行目).配
列 atom と sibling はアトミック命令を利用しつつデ
ンドログラムを表現するために用いる.まず atom は
遅延集約のためアトミックに操作される構造体の配
列である.任意の頂点 u について atom[u] は次の二
つの変数から成る.(i) degree: u を代表点とするコ
ミュニティに含まれる頂点の次数の和.ΔQの計算に
おいて d(u) の値として用いる.(ii) child : u へ最後
に集約された頂点の ID(注1).頂点数が 232 − 1,エッ
ジ数が 264 − 1に達する大規模グラフを想定したとし
ても,atom の各要素のサイズは 64 ビット整数型の
degree と 32ビット整数型の child を合わせて 12バイ
トに留まる.したがって x86-64 プロセッサなどにお
(注1):それぞれ無効な頂点 ID と次数を表す定数 INVALID ID 及びINVALID DEGREE としては有効には存在し得ない値を実装都合で定める.
図 4 図 3 (b)のデンドログラム (iii)を表現するデータ構造,及びそこから導出される新しいオーダリング
いて CAS命令によって操作可能である.配列 sibling
は同じコミュニティに属する頂点の IDを記録し,単
方向リスト構造を成す.これら二つの変数を用いると,
atom[u].child に記録された頂点から始まる sibling の
リストとリストに含まれる頂点の child を再帰的に
辿ることで頂点 u のコミュニティのメンバを収集で
きる.例として図 3 (b) のデンドログラム (iii) の構
造を図 4 に示す.頂点 4 のコミュニティのメンバは,
atom[4].child (= 7), atom[7].child (= 5), sibling [7]
(= 2), atom[2].child (= 0)の 5頂点である.逆に各
頂点からその頂点が所属するコミュニティを取得する
ためには変数 dest を用いる.dest は Union-find木構
造によって各頂点が所属するコミュニティを表現する.
初期状態において各頂点は自身のみが所属するコミュ
ニティに属する.
初期化の後,アルゴリズムは逐次集約を開始する.ま
ず各スレッドは次数の小さいものから順に集約元頂点 u
を選択する (8行目)(注2).次に他のスレッドが uを集約
先頂点として選択することがないよう,degree に無効
値を代入する (9, 10行目).なお AtomicSwap(x, y)
はアトミックに変数 xと yの値を入れ替える操作を表
す.集約先頂点 v は FindBestDestination関数に
よって発見する (11行目).得られた vに対して集約に
よるモジュラリティの上昇がない場合,uはトップレ
ベル頂点である.集約先頂点として選択され得るよう
degree の値を復元するとともに,トップレベル頂点の
集合 Toplevel へ uを追加する (12–15行目).一方モ
ジュラリティが上昇し,かつ v が集約可能な状態であ
(注2):逐次集約法において次数昇順での選択はあくまでヒューリスティクスであるため,ロックなどを用いて厳密に次数順に選択することよりも処理効率を優先してよい.そこで実装上は頂点を次数昇順にソートした配列を作り,1 番目の頂点をスレッド 1 へ,2 番目の頂点をスレッド2 へ,3 番目の頂点をスレッド 3 へ,. . . というように次数順にラウンドロビンで割り当てることによって低次数頂点から優先的に処理している.配列に対する各スレッドのメモリアクセスは局所性が低いが,読み込みのみであるため影響は小さい.
306
論文/効率的なグラフ分析のための実行時並列リオーダリング
アルゴリズム 4 FindBestDestination関数1 function FindBestDestination(u)
2 デンドログラムを辿り u のコミュニティメンバを集合 C に収集3 C ← u のコミュニティのメンバ4 for each v ∈ N(C) do
5 while dest[dest[v]] = dest[v] do
6 dest[v]← dest[dest[v]]
7 N′ ← { dest[t] t ∈ N(C) }8 for each v ∈ N′ do
9 wuv ←∑
{(s,t)∈E | s∈C,dest[t]=v} wst
10 E ← (E \ {(s, t) | s ∈ C, t ∈ N(s)}) ∪ {(u, v) | v ∈ N′}11 return argmaxv∈N′ΔQ(u, v)
る場合,vのコミュニティのメンバとして uを追加する
(16–24行目).具体的には,atom[v].child から始まる
sibling 上のリスト構造の先頭に uを挿入し,vの頂点
次数に uの次数を追加するという処理を CASにより
行う.CASが成功した場合,uと vのコミュニティを
合併する.コミュニティは dest を用いた Union-find
木で保持しているため dest [u]に v を設定することで
合併を表現する.並列処理の影響で集約に失敗した場
合,変更された変数の値を復元し,uをリトライ待ち
として保存する (25–27行目).集約のリトライは他の
頂点の集約が一通り完了した後に行う (28行目).
FindBestDestination 関数は引数 u のコミュニ
ティ及び隣接コミュニティの間のエッジの重みを計算
し,その値に基づき ΔQ を求める.詳細をアルゴリ
ズム 4 に示す.関数は四つのステップから成る.ス
テップ 1 (2行目)では uのコミュニティに属する頂点
を,図 4 に示すように child と sibling を辿ることで
収集する.ステップ 2 (3–6行目)ではコミュニティに
隣接する頂点 v について dest [v]が v の属するコミュ
ニティの IDとなるよう更新する.ただしN(v)を頂点
v の隣接頂点集合とするとき N(C) =⋃
v∈CN(v)で
ある.ステップ 3 (7–10行目)では遅延集約における
実際の集約処理を行う.つまり C に含まれる頂点と,
隣接するコミュニティに属する頂点の間のエッジの重
みを算出し,頂点 uへ付け替える.ステップ 4 (11行
目) では最も大きなモジュラリティ上昇量をもたらす
隣接頂点を探し出し返却する.
3. 3 オーダリング生成
階層的コミュニティが検出された後,Rabbit Order
はその結果を用いてオーダリングを生成する.まず逐
次処理版のアルゴリズムを OrderingGeneration
関数 (アルゴリズム 2)として示す.各階層のコミュニ
ティに含まれる頂点を再帰的に近傍に配置するため,
アルゴリズムはトップレベル頂点からの深さ優先探
索 (DFS)を行い,その訪問順を置換 π として出力す
る.例えば図 4 におけるトップレベル頂点 4 からの
DFSは 5, 7, 0, 2, 4という訪問順になる.このとき生
成される π は π[5] = 0, π[7] = 1, π[0] = 2, π[2] = 3,
π[4] = 4 である.トップレベル頂点 6 からの置換の
生成も同様である.なお接続が疎であるためコミュニ
ティ間の順序は定義しない.トップレベル頂点が複数
ある場合は任意の順序で選択しそれぞれの木において
DFSを行う.このようにして得られる置換が Rabbit
Orderの最終的な出力となる.
上記のオーダリング生成アルゴリズムは二つのス
テップで容易に並列化することができる.まず各トッ
プレベル頂点から並列に深さ優先探索を開始し,その
コミュニティ内部でのローカルな頂点順序を決定する.
次に各トップレベル頂点から得られたローカルな頂点
順序を逐次処理にて結合しグラフ全体の頂点順序を得
る.このように Rabbit Orderはコミュニティ検出と
オーダリング生成の両方を並列化している.
4. 評 価
本節では全体処理時間に関する Rabbit Order の
性能を評価する(注3).全ての実験は Intel Xeon E5-
2697v2を 2ソケット搭載し,256GBのメモリを搭載
するマシンで行った.Hyper-Threading を有効にす
ることでマシンとしては最大 48 スレッドを実行可能
である.特に言及がない限り実験は 48 スレッド実行
で行う.実験に用いたグラフを表 1 に示す.また性能
比較は次の七つのリオーダリング手法と行う (括弧内
は実験結果での略記):SlashBurn (Slash) [11], Un-
ordered parallel BFS (BFS) [15], Unordered paral-
lel RCM (RCM) [15], Multithreaded Nested Dissec-
tion (ND) [4], Layered Label Propagation (LLP)
[17], Shingle ordering (Shingle) [9], 頂点次数の昇順
(Degree).SlashBurnについては論文中で示されてい
る最善のパラメータを使用する (S-kH と k = 0.02n
の組み合わせ) [11].また SlashBurn 以外は全て並
列アルゴリズムである.Degree と Shingle は本質的
には単純なソートであるため,GCC 4.9.2 が提供す
る gnu parallel::sort 関数によって並列化した.
実験では更にベースラインとしてランダムな頂点順序
(注3):実験に用いた Rabbit Order の実装は https://git.io/rabbit
にて公開されている.
307
電子情報通信学会論文誌 2019/4 Vol. J102–D No. 4
図 5 全体処理時間に関する性能向上率
図 6 リオーダリングに要した処理時間
表 1 実験で使用するグラフ
名前 頂点数 エッジ数 出典berkstan 0.7M 7.6M SNAP [19] の web-BerkStan
enwiki 4.2M 101.4M LAW [18] の enwiki-2013
ljournal 4.8M 69.0M SNAP の soc-LiveJournal1
uk-2002 18.5M 298.1M LAW の uk-2002
road-usa 23.9M 57.7M DIMACS [20] の road usa
uk-2005 39.5M 936.4M LAW の uk-2005
it-2004 41.3M 1150.7M LAW の it-2004
twitter 41.7M 1468.4M LAW の twitter-2010
sk-2005 50.6M 1949.4M LAW の sk-2005
webbase 118.1M 1019.9M LAW の webbase-2001
(Random)を用いる.これはデータセットの配布者が
データ取得元から得られる自然なオーダリング (Web
クローラの訪問順,SNSの会員 ID順など)に対して
変更を加えている場合があるためである [18].オーダ
リングをランダムとすることでデータ配布者が与えた
影響を排除することができる.
4. 1 SpMVに基づく分析アルゴリズム
実験では SpMV に基づく最も有名なアルゴリ
ズムとして PageRank を使用する.PageRank は
k = 0, 1, 2, . . . について s が収束するまで次の計算
を繰り返す:sk+1 = (1 − c)Wsk + ce.ここで sk と
sk+1 は各頂点の PageRankスコアを表すベクトル,c
は 0 ≤ k ≤ 1のパラメタ,eはいずれの要素の値も 1n
の長さ nのベクトル,W = (wuv)はエッジ (u, v)が
存在するとき wuv = 1d(v),そうでなければ wuv = 0
の行列である.既存研究 [8] に従い,c = 0.15 とし,
収束の条件は |sk+1 − sk| < 10−10 を使用する.標準
的な方法として PageRankの並列化はアルゴリズム 1
の最も外側の for文に対して行った.
4. 2 全体処理時間と内訳
初めにリオーダリングと PageRankを合わせた全体
処理時間の改善について図 5 に示す.高速化率はラン
ダム順序で得られた PageRank 処理時間を各オーダ
リング手法で得られた全体処理時間で割ることによっ
て求めた.Rabbit Order は平均で 2.21 倍,最大で
は it-2004において 3.48倍の高速化率を示し,他手法
を大きく上回っている.なお NDは twitter, sk-2005,
webbaseにおいてメモリ不足のため動作しなかった.
性能向上の要因を分析するため,全体処理時間をリ
オーダリング処理時間と PageRank による分析時間
に分解する.図 6 はランダム順序のグラフにおける各
手法のリオーダリング時間を示したものである.ソー
トに基づく手法 (Degree, Shingle) を除くと Rabbit
Orderの処理時間は極めて短いことが分かる.例えば
10 億以上のエッジを含む webbase グラフを 13.8 秒
でリオーダリングすることができている.更にそれぞ
れのオーダリングにおける PageRank の分析時間を
図 7 に示す.Rabbit Orderはいずれの既存手法と比
較しても同等またはそれ以上に分析時間を短縮してい
る.具体的にはランダム順序と比較し平均で 3.37倍,
最大で it-2004 において 5.25 倍分析処理を高速化し
ている.この結果は既存手法の中で最も効果的であっ
た LLP (平均 3.34倍,最大 5.08倍)よりもわずかに
良い.
PageRank が高速化した理由を確認するため,各
キャッシュレベルにおけるキャッシュミスの回数と
translation look-aside buffer (TLB) ミスの回数を
図 8 に示す.全ての既存手法が処理できたグラフの
中で最小及び最大のグラフであることから実験には
308
論文/効率的なグラフ分析のための実行時並列リオーダリング
図 7 PageRank に要した処理時間
図 8 キャッシュミスと TLB ミスの数
berkstanと it-2004を使用した.実験結果からは図 7
に示された PageRank処理時間とキャッシュミス回数
が同じ傾向を示していることを確認できる.具体的に
は Rabbit Orderと LLPはキャッシュミス回数が最も
小さく,高速化率の低い BFS, Shingle, 及び Degree
はミス回数の削減率が最も低い.また,berkstanより
も it-2004 においてキャッシュミス削減率が大きいこ
とを読み取れる.これは berkstan が小規模なグラフ
でありランダム順序でもキャッシュに乗りやすいため
である.同様に比較的小規模な enwikiと ljournalに
おいてもリオーダリングによる分析の高速化率は全体
的に低い (図 7)が,it-2004のような大規模なグラフ
ではリオーダリングの効果が顕著となる傾向にある.
以上の結果より,Degree, Shingle など短時間でリ
オーダリング可能な手法はキャッシュミスの削減率が
低く,一方で LLP のようにキャッシュミス削減率が
高い手法は長いリオーダリング時間を要することを読
み取れる.Rabbit Orderはこれら既存手法と異なり,
短時間でのリオーダリングと既存手法と同等以上の
キャッシュミス削減率を両立している.
4. 3 スケーラビリティ
並列処理の効率を評価するため,それぞれのリオー
ダリング手法を並列実行することで得られる性能向上
率を図 9 に示す.なお高速化率は表 1 の全グラフに対
して適用した結果の平均である.SlashBurnは逐次処
理手法であるため除外している.12, 24, 48スレッド実
行はそれぞれ,1ソケットの 12物理コア,2ソケット
に跨る 24物理コア,及び Hyper-Threadingにて行っ
図 9 並列実行によって得られる性能向上率
図 10 全体処理時間に関する性能向上率
ている.図に示されているように,Rabbit Order は
48スレッド実行時に最も高い高速化率 (17.4倍)を達
成している.BFS と LLP も 12 倍の高速化を示して
いるが,他の手法はスレッド数によりほぼ変化してい
ない.Rabbit Order は逐次集約法が内包する高い並
列性を軽量なアトミック命令によって引き出している
ため,スレッド数に対し高いスケーラビリティを示す
ことができている.
4. 4 他の分析アルゴリズム
ここまで SpMV に基づくグラフ分析アルゴリズム
である PageRank を用いてきたが,BFS のように一
般的には SpMV を用いず実装されるアルゴリズムに
対してもリオーダリングは効果を示すことが知られて
いる [2], [10].そこで幅優先探索 (BFS),深さ優先探
索 (DFS),強連結成分分解 (SCC),グラフ直径 (Di-
ameter),そして k-core分解の五つのアルゴリズムに
ついても全体処理時間の計測を行った.結果を図 10
に示す.高速化率はランダム順序の場合を 1とした相
対的な処理時間を全グラフについて平均した値を示し
ている.いずれの分析アルゴリズムに対してもRabbit
Order は最も高い高速化率を示している.全体とし
て SCC, Diameter, k-coreの高速化率に比べ DFSと
309
電子情報通信学会論文誌 2019/4 Vol. J102–D No. 4
BFSの高速化率が低いのは,それらが軽量な処理であ
ることに起因する.分析処理時間が短いほどリオーダ
リングに要した時間の償却が難しいため,高速化率が
小さくなる傾向になる.それにもかかわらず Rabbit
Orderが全体処理時間を短縮できているのは高速なリ
オーダリングと高い局所性を両立しているためである.
5. 関 連 研 究
グラフ処理の局所性向上に関する研究は二つに大別
できる.一つ目はリオーダリングの研究 [2], [4], [6]~
[11], [14], [15], [17], [21], [22] である.リオーダリング
手法はグラフ分析の前処理としてグラフデータを最適
化することで局所性を向上させる.二つ目はグラフ処
理フレームワークの研究である [23]~[26].グラフ処
理フレームワークは局所性の高いデータ構造とデータ
へのアクセスを提供する API から成る.リオーダリ
ングは前処理であるため,グラフ処理フレームワーク
よりも柔軟に適用できることが利点である.フレーム
ワークを使用するためにはその API を用いて分析プ
ログラムを実装する必要があるのに対し,リオーダリ
ングは既存のプログラムも高速化することができる.
また,フレームワークを用いて実装された分析プログ
ラムをリオーダリングによって一層高速化することも
できる.例えば Zhang らは局所性の高いオーダリン
グによって彼らのグラフ処理フレームワーク Cagraの
効率が高まることを確認している [24].このようにリ
オーダリングは幅広く効果的なアプローチである.
リオーダリングの研究における Rabbit Orderの位
置付けを詳しく説明するため,以降ではリオーダリン
グ手法を 4種類に分類し代表的な手法を紹介する.
(1)分割に基づく手法:グラフを密に接続された頂点の
グループへ分割し,グループ内の頂点を連続に配置する
というアイデアは過去にもNested Dissection [4], [27],
COM [10], Layered Label Propagation (LLP) [17],
SlashBurn [11]などで提案されている.Rabbit Order
はコミュニティ検出によるグラフ分割を利用するため
この分類に含まれる.これらの手法はグラフの分割に
それぞれ異なる手法を採用しているため,結果として
得られるオーダリング及びリオーダリングに要する時
間が異なる.既存手法と比較すると,Rabbit Order
の特長は頂点一つのコミュニティに辿り着くまでのコ
ミュニティ階層を捉えた階層的オーダリングによる高
い局所性,及びそれを逐次集約に基づくコミュニティ
検出で実施することによる高速なリオーダリングに
ある.
(2) 探索に基づく手法:グラフ分割に基づく手法が
分割とオーダリングの生成という 2 ステップに分か
れるのに対し,一定のルールに従ってグラフを探索
(traverse)する訪問順に直接頂点をオーダリングする
手法がある.代表的なものとして Cuthill-McKee [21]
及び Reverse Cuthill-McKee (RCM) [6] が広く使用
されている.RCMにはNUMA環境向けの亜種 [2]や
並列化手法 [15]も提案されている.これらの手法は高
速である一方,複雑なグラフ構造を捉えることができ
ないため,局所性の向上効果は Rabbit Orderや LLP
よりも小さい.
(3)ソートに基づく手法:頂点のソートによってオーダ
リングを生成する手法がしばしば用いられる.Shingle
ordering [9]はソート時のキーとしてMinHash法 [28]
に基づく隣接頂点集合のハッシュ値を用いる.これによ
り隣接頂点集合に重複が多い頂点同士が近傍に配置さ
れやすくなる.また,高次数頂点はグラフ処理におい
て頻繁に参照されるため,頂点次数に基づくソートは
一定の局所性向上効果をもつ [1], [11], [22].Frequency
Based Clustering (FBC) [24]は高次数頂点のみを次
数ソートによって集約し,その他の頂点はオーダリン
グを変更しない.これにより,元々のオーダリングが
もつ局所性を保ちつつ高次数頂点の局所性を向上させ
る.本論文では Shingle orderingと次数ソートについ
て評価を行っているが,図 7 に示されているように
これらの局所性向上効果はわずかである.また,本論
文の実験条件では局所性の低いランダムな頂点順序を
入力としているため,FBC の局所性向上効果は次数
ソート以下になると考えられる.
(4)最適化に基づく手法:局所性の向上を最適化問題
へ還元し,直接それを解くことでオーダリングを生成
する研究が行われている.最新の手法はWeiらによっ
て提案された Gorder [22]である.Weiらは 2頂点が
共有する隣接頂点の数に着目し,オーダリングの局所
性の高さを示すスコア関数を定義した.Gorderはスコ
アが高くなるようなオーダリングを巡回セールスマン
問題 (TSP)の近似解法によって発見する.このような
オーダリングは高い局所性を示す一方で,生成のため
に長い時間を要する.例えばRabbit Orderは twitter
グラフ (表 1)を約 25秒でリオーダリングするのに対
し,Gorderは 5,339秒を要する [22].文献 [7], [14]の
手法は隣接行列の行または列の間に存在する局所性を
ハイパーエッジとして表現し,ハイパーグラフの分割
310
論文/効率的なグラフ分析のための実行時並列リオーダリング
や TSPを通じてオーダリングを生成する.しかしハ
イパーグラフに基づくこれらの手法は,n を頂点数,
mをエッジ数とするとき,少なくとも O(m2
n)の時間
計算量を示す [29].そのため大規模なグラフへの適用
が困難である.このように最適化に基づく手法は分析
実行時のリオーダリングに適さないのに対し,Rabbit
Orderはリオーダリング時間を含めてグラフ処理の高
速化を達成している.
6. む す び
本論文では分析実行時のリオーダリングに使用する
ためのアルゴリズムである Rabbit Orderを提案した.
Rabbit Order は階層コミュニティオーダリングと並
列逐次集約によってそれぞれ高い局所性と短時間での
リオーダリングを同時に達成している.実験の結果,
リオーダリングとグラフ分析を合わせた全体処理時間
の観点で Rabbit Orderは既存手法を大きく上回る性
能を示すことが確認された.
文 献[1] J. Arai, H. Shiokawa, T. Yamamuro, M. Onizuka,
and S. Iwamura, “Rabbit order: Just-in-time paral-
lel reordering for fast graph analysis,” Proc. IPDPS,
pp.22–31, 2016.
[2] M. Frasca, K. Madduri, and P. Raghavan, “NUMA-
aware graph mining techniques for performance and
energy efficiency,” Proc. SC, pp.95:1–95:11, 2012.
[3] H. Shiokawa, Y. Fujiwara, and M. Onizuka, “Fast
algorithm for modularity-based graph clustering,”
Proc. AAAI, pp.1170–1176, 2013.
[4] D. LaSalle and G. Karypis, “Multi-threaded graph
partitioning,” Proc. IPDPS, pp.225–236, 2013.
[5] A. Lumsdaine, D. Gregor, B. Hendrickson, and J.
Berry, “Challenges in parallel graph processing,” Par-
allel Process. Lett., vol.17, no.01, pp.5–20, 2007.
[6] J.A. George, Computer Implementation of the finite
element method, PhD thesis, Stanford University,
1971.
[7] A. Pinar and M.T. Heath, “Improving performance
of sparse matrix-vector multiplication,” Proc. SC,
pp.30–30, 1999.
[8] A.N. Langville and C.D. Meyer, “A reordering for the
PageRank problem,” SIAM J. Sci. Comput., vol.27,
no.6, pp.2112–2120, 2006.
[9] F. Chierichetti, R. Kumar, S. Lattanzi, M.
Mitzenmacher, A. Panconesi, and P. Raghavan, “On
compressing social networks,” Proc. KDD, pp.219–
228, 2009.
[10] A. Prat-Perez, D. Dominguez-Sal, and J.L. Larriba-
Pey, “Social based layouts for the increase of locality
in graph operations,” Proc. DASFAA, pp.558–569,
2011.
[11] Y. Lim, U. Kang, and C. Faloutsos, “SlashBurn:
Graph compression and mining beyond caveman
communities,” IEEE Trans. Knowl. Data Eng.,
vol.26, no.12, pp.3077–3089, 2014.
[12] H. Kwak, C. Lee, H. Park, and S. Moon, “What is
Twitter, a social network or a news media?,” Proc.
WWW, pp.591–600, 2010.
[13] U. Kang, C.E. Tsourakakis, and C. Faloutsos, “PE-
GASUS: A peta-scale graph mining system imple-
mentation and observations,” Proc. ICDM, pp.229–
238, 2009.
[14] K. Akbudak, E. Kayaaslan, and C. Aykanat, “Hy-
pergraph partitioning based models and methods for
exploiting cache locality in sparse matrix-vector mul-
tiplication,” SIAM J. Sci. Comput., vol.35, no.3,
pp.C237–C262, 2013.
[15] K.I. Karantasis, A. Lenharth, D. Nguyen, M.J.
Garzaran, and K. Pingali, “Parallelization of reorder-
ing algorithms for bandwidth and wavefront reduc-
tion,” Proc. SC, pp.921–932, 2014.
[16] M.E.J. Newman and M. Girvan, “Finding and evalu-
ating community structure in networks,” Phys. Rev.
E, vol.69, no.2, 026113, 2004.
[17] P. Boldi, M. Rosa, M. Santini, and S. Vigna,
“Layered label propagation: A multiresolution
coordinate-free ordering for compressing social net-
works,” Proc. WWW, pp.587–596, 2011.
[18] “Laboratory for Web Algorithmics,” http://law.di.
unimi.it/
[19] “Stanford Large Network Dataset Collection,”
http:// snap.stanford.edu/data/index.html
[20] DavidA. Bader, H. Meyerhenke, P. Sanders, C.
Schulz, A. Kappes, and D. Wagner, “Benchmarking
for graph clustering and partitioning,” Encyclopedia
of Social Network Analysis and Mining, pp.73–82,
2014.
[21] E. Cuthill and J. McKee, “Reducing the bandwidth
of sparse symmetric matrices,” Proc. ACM, pp.157–
172, 1969.
[22] H. Wei, J.X. Yu, C. Lu, and X. Lin, “Speedup
graph processing by graph ordering,” Proc. SIG-
MOD, pp.1813–1828, 2016.
[23] K. Zhang, R. Chen, and H. Chen, “NUMA-aware
graph-structured analytics,” Proc. PPoPP, pp.183–
193, 2015.
[24] Y. Zhang, V. Kiriansky, C. Mendis, S. Amarasinghe,
and M. Zaharia, “Making caches work for graph an-
alytics,” Proc. Big Data, pp.293–302, 2017.
[25] P. Gao, M. Zhang, K. Chen, Y. Wu, and W. Zheng,
“High performance graph processing with locality
oriented design,” IEEE Trans. Comput., vol.66, no.7,
pp.1261–1267, 2017.
[26] S. Maass, C. Min, S. Kashyap, W. Kang, M. Kumar,
and T. Kim, “Mosaic: Processing a trillion-edge
311
電子情報通信学会論文誌 2019/4 Vol. J102–D No. 4
graph on a single machine,” Proc. EuroSys, pp.527–
543, 2017.
[27] J.A. George, “Nested dissection of a regular finite el-
ement mesh,” SIAM J. Numer. Anal., vol.10, no.2,
pp.345–363, 1973.
[28] A.Z. Broder, “On the resemblance and containment
of documents,” Proc. SEQUECES, pp.21–29, 1997.
[29] U.V. Catalyurek, M. Deveci, K. Kaya, and B. Ucar,
“Multithreaded clustering for multi-level hypergraph
partitioning,” Proc. IPDPS, pp.848–859, 2012.
c©2016 IEEE. Reprinted, with permission, from [1].
(平成 30 年 6 月 27 日受付,11 月 5 日再受付,31 年 1 月 11 日早期公開)
新井 淳也
2013 年東京大学大学院情報理工学系研究科コンピュータ科学専攻修了.同年,日本電信電話株式会社入社.現在,日本電信電話株式会社 NTT ソフトウェアイノベーションセンタ研究員,及び大阪大学大学院情報科学研究科博士後期課程在籍.大規模
データ処理の高速化に関する研究開発に従事.ACM,日本データベース学会各会員.
塩川 浩昭
2009 年筑波大学第三学群情報学類卒業.2011 年同大学院システム情報工学研究科博士前期課程修了.2011 年 4 月から日本電信電話株式会社勤務の後,2015年筑波大学大学院博士後期課程修了,博士(工学).2015 年より,筑波大学計算科学研究セン
ター助教.データベース,データマイニング,特に大規模グラフ分析アルゴリズムの高速化に関する研究に従事.情報処理学会,日本データベース学会,ACM,AAAI 各会員.
山室 健
2008 年上智大学理工学研究科博士前期課程修了.同年,日本電信電話株式会社入社.2018 年大阪大学大学院情報科学研究科後期課程修了.博士(情報科学).現在,日本電信電話株式会社 NTT ソフトウェアイノベーションセンタ研究主任.DBMSの
コア技術,及びハードウェア特性を考慮したアルゴリズムの研究に従事.2015 年情報処理学会山下記念賞受賞.情報処理学会,日本データベース学会各会員.
鬼塚 真 (正員)
大阪大学大学院情報科学研究科教授.1991 年東京工業大学情報工学科卒業.同年,NTT 入社.2000–2001 年ワシントン大学客員研究員,2013–2014年電気通信大学客員教授,2012–2014年 NTT特別研究員等を経て現職に至る.博士 (工学).2004
年情報処理学会山下記念賞.2008 年日本データベース学会上林奨励賞.2013 年電子情報通信学会論文賞,情報処理学会論文賞.2014年電子情報通信学会 I-Scoverチャレンジ最優秀賞,日本データベース学会論文賞.2015 年電子情報通信学会論文賞.2017 年日本データベース学会論文賞.ACM,情報処理学会各会員.
岩村 相哲
1994 年東京大学大学院工学系研究科電子工学専攻修了.同年,日本電信電話株式会社入社.以降,高速ネットワーク,クラウド基盤,ビッグデータ処理基盤等の研究開発に従事.現在,北海道大学 産学・地域協働推進機構 産学協働マネージャー.
工学博士.情報処理学会,日本データベース学会,人工知能学会,データサイエンティスト協会各会員.
312