SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
GPGPUを用いた大規模高速
グラフ処理に向けて
白幡 晃一*1,佐藤 仁*1,鈴村 豊太郎*1,*2,松岡聡*1, *3, *4
*1 東京工業大学
*2 IBM 東京基礎研究所
*3 国立情報学研究所
*4 科学技術振興機構
1
GPGPUを用いた大規模グラフ処理
• 大規模グラフの出現
– データ量の肥大化,ストレージの省コスト化
– 幅広い応用例
• 医療,ソーシャルネットワーク,インテリジェンス,
生物学,スマートグリッド,シミュレーション
→ 大規模グラフの高速処理が必要
• 高速大規模グラフ処理手法
– MapReduce
• 並列化による大規模データ処理
• 既存の MapReduce によるグラフ処理モデルとして
GIM-V モデルが提案されている
– GPGPU
• コア数,メモリバンド幅の活用により高速処理が可能
• 既存のGPU 上での MapReduce 処理系として
Mars が提案されている
→ GPU と MapReduce による高速大規模グラフ処理
2
GPGPUを用いた大規模グラフ処理に
おける問題点
• メモリあふれへの対処
– GPU は CPUに比べメモリ容量が少ない
– 効率的なメモリ階層の管理が必要
• マルチ GPU 化
– 効率的なデータの割り振り方法は
明らかでない
• GIM-V モデルへの適用
– 既存のCPU実装に対して,GPUの使用に
よりどの程度高速化できるか定かでない
→ GIM-V モデルを Mars 上に実装して評価
3
GPU
メモリ
CPU
メモリ
ディスク
アクセス
速度 サイズ
速
遅
小
大
本発表
目的と成果
• 目的
– GPU 上での MapReduce による高速グラフ処理
• 成果
– GPU 上への GIM-V モデルの実装
• Mars 上に実装
– 評価
• 3 種類のグラフ処理アプリケーション
(PageRank, Random Walk with Restart, Connected Components)
• CPUによる既存実装との比較実験
→ CPU 4コアに比べ,2.17~9.53倍の高速化
4
既存の大規模グラフ処理システム
• グラフ構造データ
– 頂点集合と辺集合から成る
• 辺: 頂点の対
• PEGASUS
– Hadoopベースのグラフ処理ライブラリ
– GIM-V (Generalized Iterated Matrix-
Vector multiplication) による計算
• 行列ベクトル積を一般化
• 典型的なグラフ処理を記述可能
– 辺集合を隣接行列,頂点集合をベクトルとして
計算
• MapReduceにより記述可能
→ GPUの使用によりどれほど高速化
できるかは定かではない
5
= ×G
v’ M v
GIM-V
• Generalized Iterative Matrix-Vector multiplication*1
– 反復行列ベクトル積の一般化
– 𝑣′ = 𝑀 × 𝐺 𝑣 where
v’i = assign(vi , combineAlli ({xj | j = 1..n, xj = combine2(mi,j, vj)}))
– 上記3つの関数を実装することで,様々なグラフ処理を記述可能
– 演算は反復して収束するまで実行
– GIM-V を 2つのMapReduceにより記述可能
• PEGASUS ではHadoop上に実装
→ Mars 上に実装し評価
6
*1 : Kang, U. et al, “PEGASUS: A Peta-Scale Graph Mining System- Implementation
and Observations”, IEEE INTERNATIONAL CONFERENCE ON DATA MINING 2009
= ×Gv’i mi,j
vj
v’ M
combineAll
combine2
assign v
i
j
i
7
MapReduce による GIM-V 計算
= ×G
v’ M v
• Stage-1 Map
8
MapReduceによるGIM-V計算
= ×G
mi1,j
vj
v’ M v
Stage-1 Map
・ベクトル: そのまま出力
・行列: key を列番号,value
を行番号と重みの組として
出力
< j , vj>
j
j
i1
mi2,ji2 < j , (mi1,j , i) >
• Stage-1 Shuffle
9
MapReduceによるGIM-V計算
= ×G
vj
v’ M v
< j , vj>
j
j
< j , (mi1,j , i) >
mi1,j
mi2,j
i1
i2
Stage-1 Shuffle
< j , [vj , (mi1,j , i) , (mi2’j , i’)]>
• Stage-1 Reduce
10
MapReduceによるGIM-V計算
= ×G
vj
v’ M v
combine2
j
j
mi2,j
mi1,ji1
i2
Stage-1 Shuffle
< j , [vj , (mi1,j , i) , (mi2’j , i’)]>
Stage-1 Reduce
key を行番号,value を
combine2(行列の要素の値,
ベクトルの要素の値)
として出力
< i1 , combine2(vj , mi1,j) >
11
MapReduceによるGIM-V計算
• Stage-2 Map
Stage-2 Map
Stage-1 Reduceの結果を
そのまま出力
< i , combine2(vj , mi,j) >
= ×G
vj
v’ M v
combine2
j
j
mi2,j
mi1,ji1
i2
12
MapReduceによるGIM-V計算
= ×Gmi,j1
vi
v’ M
combine2
vj1
i
i
• Stage-2 Shuffle
mi,j2
j2
< i , combine2(vj , mi,j) >
Stage-2 Shuffle
< i , [ combine2(vi , mi,j1) ,
combine2(vi , mi,j2) ]>
13
MapReduceによるGIM-V計算
= ×Gv’i
vi
v’ M
combineAll
combine2
assign vj1
i
i
• Stage-2 Reduce
Stage-2 Reduce
Stage-1 Reduce のcombine2
の結果に対してcombineAllを
実行し、その結果を新しい
ベクトルの要素としてassign
j2
mi,j2
Stage-2 Shuffle
< i , [ combine2(vi , mi,j1) ,
combine2(vi , mi,j2) ]>
v’i = combineAll(
[ combine2(vi , mi,j1) ,
combine2(vi , mi,j2) ] )
< i, assign( v’i , vi) >
mi,j1
Mars の構造
• Mars*1 : 既存のGPU用MapReduceフレームワーク
• Map, Reduce 関数をCUDAカーネルとして実装
– GPU のスレッド単位でMapper,Reducer を呼び出し
– データ構造: <Key size, Key offset, Value size, Value offset>
– Map/Reduce Count → Prefix sum → Map/Reduce の順に実行
• Shuffleフェーズは GPUベースの Bitonic Sortを実行
• 各MapReduceの始めと終わりにCPU-GPU間入出力
14
Pre
process
Map
Split
Prefix
Sum
Map
Count
Map
Count
Map
Map
Sort
Reduce
Split
Prefix
Sum
Reduce
Count
Reduce
Count
Reduce
Reduce
Map Stage
Reduce StageShuffle Stage
GPU Processing Mars Scheduler
*1 : Fang W. et al, “Mars: Accelerating MapReduce with Graphics Processors”,
Parallel and Distributed Systems, 2011
• Mars 上に GIM-V を実装
– 各MapReduce毎に入出力をファイルに読み書き
– MapReduce処理の前処理としてMapの入力を一行ずつ
(CPUメモリ内に)格納
– GIM-V 以外の計算も必要
• PageRank では2つ目のReduce と PostProcess で収束判定
• RWR では前処理に2つ,収束判定に1つ MapReduce を追加 (計5つ)
• Connected Componentsでは収束判定に1つ MapReduce を追加 (計3つ)
15
実装
MapReduce
1
Read
input
1
Write
output
1
Add Map
input
1
MapReduce
2
Read
input
2
Write
output
2
Add Map
input
2
GPU Processing Scheduler
Preprocess Postprocess
実験
• グラフ処理アプリの反復処理1ループの平均時間を測定
– Mars と PEGASUS の比較
• ベンチマークアプリケーション
– PageRank
• ウェブページの重要度を決定
– Random Walk with Restart (RWR)
• 起点ノードと他のノードとの近接性を計算
– Connected Components
• グラフの連結成分を探索
• 入力データ
– Kronecker グラフを人工的に生成し,エッジリストの形式で
テキストファイルとして格納
• Graph 500 の Generator により生成
• スケールフリー性を持つ
– SCALE を14~20と変化
• SCALE: 頂点数の2の対数
(頂点数 = 2SCALE)
• 辺の数 = 頂点数×24
16
0.19 0.05
0.57 0.19
0.19 0.05
i1 j1
i2 j2
…
i2^x j2^x
<key, value>隣接行列
格納する割合
実験環境
• 1ノードでの実験
• CPU 4コア 8スレッド(HyperThread オン),GPU 1台
• GPU
– CUDA Driver Version: 4.0
– CUDA Runtime Version: 3.20
– CUDA Capability: 2.0
– 共有/L1 キャッシュサイズ: 64KB
• PEGASUS
– Hadoop 0.21.0, Java 1.6.0 (Oracle Java VM)
– Mapper, Reducer の数を変化させて実験
– JVM のヒープサイズは1GB(デフォルト)
– GPUは使用しない
17
CPU GPU
種類 Intel® Core™ i7 Tesla C2050
物理コア数 4 448
周波数 2.67 GHz 1.15 GHz
メモリ 12.3 GB 2.8 GB (Global)
コンパイラ gcc 4.1.2 nvcc 3.2
反復1回の実行時間: Mars vs. PEGASUS
- PageRank
18
• Mars,PEGASUS に対して各反復の平均実行時間を測定
– ファイル入出力や前処理,後処理の時間を含めて測定
• 実行結果
– Mars では PEGASUS (8 mapper, 2 reducer)に対して2.17~9.53倍高速
– PEGASUS ではジョブ実行中のファイル入出力によるオーバーヘッド大
0
50
100
150
200
250
300
350
400
450
14 15 16 17 18 19 20
Timeofoneiteration[sec]
SCALE
Mars
PEGASUS (1 map, 1 red)
PEGASUS (8 map, 1 red)
PEGASUS (8 map, 2 red)
PEGASUS (8 map, 8 red)
0
50
100
150
200
250
14 15 16 17 18 19 20
SCALE
Mars
PEGASUS (1 map, 1 red)
PEGASUS (8 map, 1 red)
PEGASUS (8 map, 2 red)
PEGASUS (8 map, 8 red)
反復1回の実行時間: Mars vs. PEGASUS
- RWR, Connected Components
• RWR
– 反復一回当たり 5 つのMapReduce
– 2.18 ~ 5.47倍の性能向上
• Connected Components
– 反復一回当たり 3 つのMapReduce
– 2.41 ~ 8.46倍の性能向上
• MapReduceの数が多くなるほど性能向上率が下がる傾向
19
RWR Connected Components
0
50
100
150
200
250
300
350
400
450
14 15 16 17 18 19 20
Timeofoneiteration[sec]
SCALE
実行時間の内訳: PageRank
20
0
10
20
30
40
50
60
70
80
90
14 15 16 17 18 19 20
SCALE
Reduce
Shuffle
PCIE-IO
Map
Pre + Post
0
20
40
60
80
100
120
140
160
180
14 15 16 17 18 19 20
SCALE
PEGASUS
(8 map, 2 red)
Reduce + File I/O
Map + File I/O
Pre + Post
• Mars では,全体の実行時間に対する前処理,後処理の占める割合が大
きい
– MapReduce毎にファイル入出力が発生しているため
• PEGASUS では,Map,Reduce ともに大
– Map, Reduce はタスクの起動から実行終了までの時間を測定
– Map や Reduce の実行中に頻繁にファイル入出力が発生
Mars
マルチGPU化,
大規模グラフ処理に向けて
• PEGASUS では Mars に比べファイル入出力大
– PEGASUS では Map, Reduce 毎にファイル入出力
– Mars では 1つのMapReduce をGPUメモリ内で処理
• Mars におけるファイル入出力オーバーヘッド
– Mars における MapReduce 間ファイル入出力を削減する
必要がある
• 実装を改善してメモリ内で処理
• メモリ階層(GPU,CPU,SSD)の管理,マルチGPUにおけるデータ
の割り振り方法を模索
• MapReduce 処理によるオーバーヘッド
– GIM-V によりグラフ処理を容易に記述できる一方,ナイー
ブな実装に比べ無駄が多い
• ナイーブな実装との比較実験
21
関連研究
• 既存の大規模グラフ処理システム
– Pregel*1 : Master/Worker モデルによるC++の実装
• Worker毎に頂点を分担して計算
– Parallel BGL*2 : MPIベースのC++並列グラフ処理ライブラリ
• GPU,MapReduceを用いたグラフ処理
– GPUを用いて最短路問題を解くアルゴリズム*3
• 幅優先探索,単一始点最短路問題を高速に計算
– Graph500 *4 のリファレンス実装にMapReduceを用いた最短路問題が
公開される予定
• マルチGPU上,マルチノード上でのMapReduce実装
– GPMR*5 : 既存のマルチGPU上でのMapReduce実装
– MapReduce-MPI*6 : MPIを使用したMapReduceライブラリ
→ 今後マルチGPU化を行った上で,大規模グラフ処理における
メモリ階層管理を模索
22
*1 : Malewicz, G. et al, “Pregel: A System for Large-Scale Graph Processing”, SIGMOD 2010.
*2 : Gregor, D. et al, “The parallel BGL: A Generic Library for Distributed Graph Computations”, POOSC 2005.
*3 : Harish, P. et al, “Accelerating large graph algorithms on the GPU using CUDA”, HiPC 2007.
*4 : David A. Bader et al, “The Graph 500 List”
*5 : Stuart, J.A. et al, “Multi-GPU MapReduce on GPU Clusters”, IPDPS 2011.
*6 : Plimpton, S.J. et al, “MapReduce in MPI for Large-scale Graph Algorithms”, Parallel Computing 2011.
まとめと今後の課題
• まとめ
– GPUを使用したMapReduceによるグラフ処理
– PEGASUSとの比較
• PageRankアプリケーションにおいて,反復一回当たり
2.17 ~ 9.53倍の高速化
• 今後の課題
– 性能の改善
• ファイル入出力オーバーヘッドの削減
– GPUメモリに乗り切らない入力データへの対応
• グラフの構造を考慮した効率的なデータの割り振り
• メモリ階層の管理
– GPUメモリ,CPUメモリ,SSD へ格納するデータのスケジューリング
– マルチGPU化
• MPIによる複数ノード,マルチGPU処理
– Map,Shuffle,Reduceの前後にMPIによるデータ交換
23

Contenu connexe

Tendances

2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
智啓 出川
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
智啓 出川
 
FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築
Yoichi Kayama
 
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
智啓 出川
 
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
智啓 出川
 
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
智啓 出川
 
2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
智啓 出川
 
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
智啓 出川
 

Tendances (20)

Debianでタイルマップサービスを作ってみた
Debianでタイルマップサービスを作ってみたDebianでタイルマップサービスを作ってみた
Debianでタイルマップサービスを作ってみた
 
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
2015年度先端GPGPUシミュレーション工学特論 第15回 CPUとGPUの協調
 
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
 
GPS で色々遊ぶ
GPS で色々遊ぶGPS で色々遊ぶ
GPS で色々遊ぶ
 
Koedo71-matoken
Koedo71-matokenKoedo71-matoken
Koedo71-matoken
 
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
2015年度GPGPU実践基礎工学 第14回 GPGPU組込開発環境
 
地質災害関連分野への展開(GEO Grid成果報告会2012)
地質災害関連分野への展開(GEO Grid成果報告会2012)地質災害関連分野への展開(GEO Grid成果報告会2012)
地質災害関連分野への展開(GEO Grid成果報告会2012)
 
FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築FOSS4Gを利用した水害時避難経路検索システムの構築
FOSS4Gを利用した水害時避難経路検索システムの構築
 
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
2015年度GPGPU実践基礎工学 第1回 学際的分野における先端シミュレーション技術の歴史
 
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第5回 ハードウェアによるCPUの高速化技術
 
Foss4 gマイクロジオデータ解析入門
Foss4 gマイクロジオデータ解析入門Foss4 gマイクロジオデータ解析入門
Foss4 gマイクロジオデータ解析入門
 
QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析QGIS はじめてのラスタ解析
QGIS はじめてのラスタ解析
 
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細(様々なメモリの利用)
2015年度先端GPGPUシミュレーション工学特論 第5回 GPUのメモリ階層の詳細 (様々なメモリの利用)
 
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
2015年度GPGPU実践基礎工学 第6回 ソフトウェアによるCPUの高速化技術
 
2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理2015年度GPGPU実践プログラミング 第11回 画像処理
2015年度GPGPU実践プログラミング 第11回 画像処理
 
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念とメモリアクセス
2015年度先端GPGPUシミュレーション工学特論 第2回 GPUによる並列計算の概念と メモリアクセス
 
国際標準規格を用いたASTER高温領域検出システムの開発
国際標準規格を用いたASTER高温領域検出システムの開発国際標準規格を用いたASTER高温領域検出システムの開発
国際標準規格を用いたASTER高温領域検出システムの開発
 
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用(支配方程式,CPUプログラム)
2015年度先端GPGPUシミュレーション工学特論 第11回 数値流体力学への応用 (支配方程式,CPUプログラム)
 
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
【旧版】2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
 
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
2015年度GPGPU実践基礎工学 第7回 シングルコアとマルチコア
 

En vedette

2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
智啓 出川
 
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算 (移流方程式)
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算(移流方程式)2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算(移流方程式)
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算 (移流方程式)
智啓 出川
 
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
智啓 出川
 
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
智啓 出川
 
2015年度GPGPU実践プログラミング 第14回 N体問題
2015年度GPGPU実践プログラミング 第14回 N体問題2015年度GPGPU実践プログラミング 第14回 N体問題
2015年度GPGPU実践プログラミング 第14回 N体問題
智啓 出川
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算
智啓 出川
 
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
智啓 出川
 

En vedette (16)

2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
2009/12/10 GPUコンピューティングの現状とスーパーコンピューティングの未来
 
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
2015年度先端GPGPUシミュレーション工学特論 第7回 総和計算(Atomic演算)
 
DMMの闇に触れた話
DMMの闇に触れた話DMMの闇に触れた話
DMMの闇に触れた話
 
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算 (移流方程式)
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算(移流方程式)2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算(移流方程式)
2015年度先端GPGPUシミュレーション工学特論 第9回 偏微分方程式の差分計算 (移流方程式)
 
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
2015年度GPGPU実践基礎工学 第2回 GPGPUの歴史と応用例
 
Edomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみようEdomae 2015 - マルウェアを解析してみよう
Edomae 2015 - マルウェアを解析してみよう
 
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
GPGPU Seminar (Accelerataion of Lattice Boltzmann Method using CUDA Fortran)
 
2015年度GPGPU実践プログラミング 第14回 N体問題
2015年度GPGPU実践プログラミング 第14回 N体問題2015年度GPGPU実践プログラミング 第14回 N体問題
2015年度GPGPU実践プログラミング 第14回 N体問題
 
2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算2015年度GPGPU実践プログラミング 第7回 総和計算
2015年度GPGPU実践プログラミング 第7回 総和計算
 
逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -
 
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
2015年度GPGPU実践プログラミング 第2回 GPUのアーキテクチャとプログラム構造
 
GPU最適化入門
GPU最適化入門GPU最適化入門
GPU最適化入門
 
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
CEDEC 2016 Metal と Vulkan を用いた水彩画レンダリング技法の紹介
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門
 
最適化超入門
最適化超入門最適化超入門
最適化超入門
 
SVMについて
SVMについてSVMについて
SVMについて
 

Similaire à GPGPUを用いた大規模高速グラフ処理に向けて

GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
智啓 出川
 
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
智啓 出川
 
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
Yoichi Kayama
 
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
智啓 出川
 

Similaire à GPGPUを用いた大規模高速グラフ処理に向けて (20)

第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)第11回 配信講義 計算科学技術特論B(2022)
第11回 配信講義 計算科学技術特論B(2022)
 
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
20181211 - PGconf.ASIA - NVMESSD&GPU for BigData
 
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE) GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
GPGPU Seminar (GPU Accelerated Libraries, 2 of 3, cuSPARSE)
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
 
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS) GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
GPGPU Seminar (GPU Accelerated Libraries, 1 of 3, cuBLAS)
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
 
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
 
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
CMSI計算科学技術特論A(14) 量子化学計算の大規模化1
 
RAPIDS 概要
RAPIDS 概要RAPIDS 概要
RAPIDS 概要
 
Hello, DirectCompute
Hello, DirectComputeHello, DirectCompute
Hello, DirectCompute
 
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
2015年度GPGPU実践基礎工学 第12回 GPUによる画像処理
 
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database AnalyticsPL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
 
TinyMapReduce on ruby
TinyMapReduce on rubyTinyMapReduce on ruby
TinyMapReduce on ruby
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
文献紹介:Deep Analysis of CNN-Based Spatio-Temporal Representations for Action Re...
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
PL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database AnalyticsPL/CUDA - GPU Accelerated In-Database Analytics
PL/CUDA - GPU Accelerated In-Database Analytics
 
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
FPGAによる津波シミュレーション -- GPUを超える高性能計算の手法
 
200730material fujita
200730material fujita200730material fujita
200730material fujita
 

Plus de Koichi Shirahata

Plus de Koichi Shirahata (8)

Performance Analysis of Lattice QCD with APGAS Programming Model
Performance Analysis of Lattice QCD with APGAS Programming ModelPerformance Analysis of Lattice QCD with APGAS Programming Model
Performance Analysis of Lattice QCD with APGAS Programming Model
 
Hybrid Map Task Scheduling for GPU-based Heterogeneous Clusters
Hybrid Map Task Scheduling for GPU-based Heterogeneous ClustersHybrid Map Task Scheduling for GPU-based Heterogeneous Clusters
Hybrid Map Task Scheduling for GPU-based Heterogeneous Clusters
 
A GPU Implementation of Generalized Graph Processing Algorithm GIM-V
A GPU Implementation of Generalized Graph Processing Algorithm GIM-VA GPU Implementation of Generalized Graph Processing Algorithm GIM-V
A GPU Implementation of Generalized Graph Processing Algorithm GIM-V
 
Performance Analysis of Lattice QCD on GPUs in APGAS Programming Model
Performance Analysis of Lattice QCD on GPUs in APGAS Programming ModelPerformance Analysis of Lattice QCD on GPUs in APGAS Programming Model
Performance Analysis of Lattice QCD on GPUs in APGAS Programming Model
 
GPUアクセラレータと不揮発性メモリを考慮したI/O性能の予備評価
GPUアクセラレータと不揮発性メモリを考慮したI/O性能の予備評価GPUアクセラレータと不揮発性メモリを考慮したI/O性能の予備評価
GPUアクセラレータと不揮発性メモリを考慮したI/O性能の予備評価
 
Out-of-core GPU Memory Management for MapReduce-based Large-scale Graph Proce...
Out-of-core GPU Memory Management for MapReduce-based Large-scale Graph Proce...Out-of-core GPU Memory Management for MapReduce-based Large-scale Graph Proce...
Out-of-core GPU Memory Management for MapReduce-based Large-scale Graph Proce...
 
A Scalable Implementation of a MapReduce-based Graph Processing Algorithm for...
A Scalable Implementation of a MapReduce-based Graph Processing Algorithm for...A Scalable Implementation of a MapReduce-based Graph Processing Algorithm for...
A Scalable Implementation of a MapReduce-based Graph Processing Algorithm for...
 
Performance Analysis of MapReduce Implementations on High Performance Homolog...
Performance Analysis of MapReduce Implementations on High Performance Homolog...Performance Analysis of MapReduce Implementations on High Performance Homolog...
Performance Analysis of MapReduce Implementations on High Performance Homolog...
 

Dernier

Dernier (10)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

GPGPUを用いた大規模高速グラフ処理に向けて

  • 1. GPGPUを用いた大規模高速 グラフ処理に向けて 白幡 晃一*1,佐藤 仁*1,鈴村 豊太郎*1,*2,松岡聡*1, *3, *4 *1 東京工業大学 *2 IBM 東京基礎研究所 *3 国立情報学研究所 *4 科学技術振興機構 1
  • 2. GPGPUを用いた大規模グラフ処理 • 大規模グラフの出現 – データ量の肥大化,ストレージの省コスト化 – 幅広い応用例 • 医療,ソーシャルネットワーク,インテリジェンス, 生物学,スマートグリッド,シミュレーション → 大規模グラフの高速処理が必要 • 高速大規模グラフ処理手法 – MapReduce • 並列化による大規模データ処理 • 既存の MapReduce によるグラフ処理モデルとして GIM-V モデルが提案されている – GPGPU • コア数,メモリバンド幅の活用により高速処理が可能 • 既存のGPU 上での MapReduce 処理系として Mars が提案されている → GPU と MapReduce による高速大規模グラフ処理 2
  • 3. GPGPUを用いた大規模グラフ処理に おける問題点 • メモリあふれへの対処 – GPU は CPUに比べメモリ容量が少ない – 効率的なメモリ階層の管理が必要 • マルチ GPU 化 – 効率的なデータの割り振り方法は 明らかでない • GIM-V モデルへの適用 – 既存のCPU実装に対して,GPUの使用に よりどの程度高速化できるか定かでない → GIM-V モデルを Mars 上に実装して評価 3 GPU メモリ CPU メモリ ディスク アクセス 速度 サイズ 速 遅 小 大 本発表
  • 4. 目的と成果 • 目的 – GPU 上での MapReduce による高速グラフ処理 • 成果 – GPU 上への GIM-V モデルの実装 • Mars 上に実装 – 評価 • 3 種類のグラフ処理アプリケーション (PageRank, Random Walk with Restart, Connected Components) • CPUによる既存実装との比較実験 → CPU 4コアに比べ,2.17~9.53倍の高速化 4
  • 5. 既存の大規模グラフ処理システム • グラフ構造データ – 頂点集合と辺集合から成る • 辺: 頂点の対 • PEGASUS – Hadoopベースのグラフ処理ライブラリ – GIM-V (Generalized Iterated Matrix- Vector multiplication) による計算 • 行列ベクトル積を一般化 • 典型的なグラフ処理を記述可能 – 辺集合を隣接行列,頂点集合をベクトルとして 計算 • MapReduceにより記述可能 → GPUの使用によりどれほど高速化 できるかは定かではない 5 = ×G v’ M v
  • 6. GIM-V • Generalized Iterative Matrix-Vector multiplication*1 – 反復行列ベクトル積の一般化 – 𝑣′ = 𝑀 × 𝐺 𝑣 where v’i = assign(vi , combineAlli ({xj | j = 1..n, xj = combine2(mi,j, vj)})) – 上記3つの関数を実装することで,様々なグラフ処理を記述可能 – 演算は反復して収束するまで実行 – GIM-V を 2つのMapReduceにより記述可能 • PEGASUS ではHadoop上に実装 → Mars 上に実装し評価 6 *1 : Kang, U. et al, “PEGASUS: A Peta-Scale Graph Mining System- Implementation and Observations”, IEEE INTERNATIONAL CONFERENCE ON DATA MINING 2009 = ×Gv’i mi,j vj v’ M combineAll combine2 assign v i j i
  • 7. 7 MapReduce による GIM-V 計算 = ×G v’ M v
  • 8. • Stage-1 Map 8 MapReduceによるGIM-V計算 = ×G mi1,j vj v’ M v Stage-1 Map ・ベクトル: そのまま出力 ・行列: key を列番号,value を行番号と重みの組として 出力 < j , vj> j j i1 mi2,ji2 < j , (mi1,j , i) >
  • 9. • Stage-1 Shuffle 9 MapReduceによるGIM-V計算 = ×G vj v’ M v < j , vj> j j < j , (mi1,j , i) > mi1,j mi2,j i1 i2 Stage-1 Shuffle < j , [vj , (mi1,j , i) , (mi2’j , i’)]>
  • 10. • Stage-1 Reduce 10 MapReduceによるGIM-V計算 = ×G vj v’ M v combine2 j j mi2,j mi1,ji1 i2 Stage-1 Shuffle < j , [vj , (mi1,j , i) , (mi2’j , i’)]> Stage-1 Reduce key を行番号,value を combine2(行列の要素の値, ベクトルの要素の値) として出力 < i1 , combine2(vj , mi1,j) >
  • 11. 11 MapReduceによるGIM-V計算 • Stage-2 Map Stage-2 Map Stage-1 Reduceの結果を そのまま出力 < i , combine2(vj , mi,j) > = ×G vj v’ M v combine2 j j mi2,j mi1,ji1 i2
  • 12. 12 MapReduceによるGIM-V計算 = ×Gmi,j1 vi v’ M combine2 vj1 i i • Stage-2 Shuffle mi,j2 j2 < i , combine2(vj , mi,j) > Stage-2 Shuffle < i , [ combine2(vi , mi,j1) , combine2(vi , mi,j2) ]>
  • 13. 13 MapReduceによるGIM-V計算 = ×Gv’i vi v’ M combineAll combine2 assign vj1 i i • Stage-2 Reduce Stage-2 Reduce Stage-1 Reduce のcombine2 の結果に対してcombineAllを 実行し、その結果を新しい ベクトルの要素としてassign j2 mi,j2 Stage-2 Shuffle < i , [ combine2(vi , mi,j1) , combine2(vi , mi,j2) ]> v’i = combineAll( [ combine2(vi , mi,j1) , combine2(vi , mi,j2) ] ) < i, assign( v’i , vi) > mi,j1
  • 14. Mars の構造 • Mars*1 : 既存のGPU用MapReduceフレームワーク • Map, Reduce 関数をCUDAカーネルとして実装 – GPU のスレッド単位でMapper,Reducer を呼び出し – データ構造: <Key size, Key offset, Value size, Value offset> – Map/Reduce Count → Prefix sum → Map/Reduce の順に実行 • Shuffleフェーズは GPUベースの Bitonic Sortを実行 • 各MapReduceの始めと終わりにCPU-GPU間入出力 14 Pre process Map Split Prefix Sum Map Count Map Count Map Map Sort Reduce Split Prefix Sum Reduce Count Reduce Count Reduce Reduce Map Stage Reduce StageShuffle Stage GPU Processing Mars Scheduler *1 : Fang W. et al, “Mars: Accelerating MapReduce with Graphics Processors”, Parallel and Distributed Systems, 2011
  • 15. • Mars 上に GIM-V を実装 – 各MapReduce毎に入出力をファイルに読み書き – MapReduce処理の前処理としてMapの入力を一行ずつ (CPUメモリ内に)格納 – GIM-V 以外の計算も必要 • PageRank では2つ目のReduce と PostProcess で収束判定 • RWR では前処理に2つ,収束判定に1つ MapReduce を追加 (計5つ) • Connected Componentsでは収束判定に1つ MapReduce を追加 (計3つ) 15 実装 MapReduce 1 Read input 1 Write output 1 Add Map input 1 MapReduce 2 Read input 2 Write output 2 Add Map input 2 GPU Processing Scheduler Preprocess Postprocess
  • 16. 実験 • グラフ処理アプリの反復処理1ループの平均時間を測定 – Mars と PEGASUS の比較 • ベンチマークアプリケーション – PageRank • ウェブページの重要度を決定 – Random Walk with Restart (RWR) • 起点ノードと他のノードとの近接性を計算 – Connected Components • グラフの連結成分を探索 • 入力データ – Kronecker グラフを人工的に生成し,エッジリストの形式で テキストファイルとして格納 • Graph 500 の Generator により生成 • スケールフリー性を持つ – SCALE を14~20と変化 • SCALE: 頂点数の2の対数 (頂点数 = 2SCALE) • 辺の数 = 頂点数×24 16 0.19 0.05 0.57 0.19 0.19 0.05 i1 j1 i2 j2 … i2^x j2^x <key, value>隣接行列 格納する割合
  • 17. 実験環境 • 1ノードでの実験 • CPU 4コア 8スレッド(HyperThread オン),GPU 1台 • GPU – CUDA Driver Version: 4.0 – CUDA Runtime Version: 3.20 – CUDA Capability: 2.0 – 共有/L1 キャッシュサイズ: 64KB • PEGASUS – Hadoop 0.21.0, Java 1.6.0 (Oracle Java VM) – Mapper, Reducer の数を変化させて実験 – JVM のヒープサイズは1GB(デフォルト) – GPUは使用しない 17 CPU GPU 種類 Intel® Core™ i7 Tesla C2050 物理コア数 4 448 周波数 2.67 GHz 1.15 GHz メモリ 12.3 GB 2.8 GB (Global) コンパイラ gcc 4.1.2 nvcc 3.2
  • 18. 反復1回の実行時間: Mars vs. PEGASUS - PageRank 18 • Mars,PEGASUS に対して各反復の平均実行時間を測定 – ファイル入出力や前処理,後処理の時間を含めて測定 • 実行結果 – Mars では PEGASUS (8 mapper, 2 reducer)に対して2.17~9.53倍高速 – PEGASUS ではジョブ実行中のファイル入出力によるオーバーヘッド大 0 50 100 150 200 250 300 350 400 450 14 15 16 17 18 19 20 Timeofoneiteration[sec] SCALE Mars PEGASUS (1 map, 1 red) PEGASUS (8 map, 1 red) PEGASUS (8 map, 2 red) PEGASUS (8 map, 8 red)
  • 19. 0 50 100 150 200 250 14 15 16 17 18 19 20 SCALE Mars PEGASUS (1 map, 1 red) PEGASUS (8 map, 1 red) PEGASUS (8 map, 2 red) PEGASUS (8 map, 8 red) 反復1回の実行時間: Mars vs. PEGASUS - RWR, Connected Components • RWR – 反復一回当たり 5 つのMapReduce – 2.18 ~ 5.47倍の性能向上 • Connected Components – 反復一回当たり 3 つのMapReduce – 2.41 ~ 8.46倍の性能向上 • MapReduceの数が多くなるほど性能向上率が下がる傾向 19 RWR Connected Components 0 50 100 150 200 250 300 350 400 450 14 15 16 17 18 19 20 Timeofoneiteration[sec] SCALE
  • 20. 実行時間の内訳: PageRank 20 0 10 20 30 40 50 60 70 80 90 14 15 16 17 18 19 20 SCALE Reduce Shuffle PCIE-IO Map Pre + Post 0 20 40 60 80 100 120 140 160 180 14 15 16 17 18 19 20 SCALE PEGASUS (8 map, 2 red) Reduce + File I/O Map + File I/O Pre + Post • Mars では,全体の実行時間に対する前処理,後処理の占める割合が大 きい – MapReduce毎にファイル入出力が発生しているため • PEGASUS では,Map,Reduce ともに大 – Map, Reduce はタスクの起動から実行終了までの時間を測定 – Map や Reduce の実行中に頻繁にファイル入出力が発生 Mars
  • 21. マルチGPU化, 大規模グラフ処理に向けて • PEGASUS では Mars に比べファイル入出力大 – PEGASUS では Map, Reduce 毎にファイル入出力 – Mars では 1つのMapReduce をGPUメモリ内で処理 • Mars におけるファイル入出力オーバーヘッド – Mars における MapReduce 間ファイル入出力を削減する 必要がある • 実装を改善してメモリ内で処理 • メモリ階層(GPU,CPU,SSD)の管理,マルチGPUにおけるデータ の割り振り方法を模索 • MapReduce 処理によるオーバーヘッド – GIM-V によりグラフ処理を容易に記述できる一方,ナイー ブな実装に比べ無駄が多い • ナイーブな実装との比較実験 21
  • 22. 関連研究 • 既存の大規模グラフ処理システム – Pregel*1 : Master/Worker モデルによるC++の実装 • Worker毎に頂点を分担して計算 – Parallel BGL*2 : MPIベースのC++並列グラフ処理ライブラリ • GPU,MapReduceを用いたグラフ処理 – GPUを用いて最短路問題を解くアルゴリズム*3 • 幅優先探索,単一始点最短路問題を高速に計算 – Graph500 *4 のリファレンス実装にMapReduceを用いた最短路問題が 公開される予定 • マルチGPU上,マルチノード上でのMapReduce実装 – GPMR*5 : 既存のマルチGPU上でのMapReduce実装 – MapReduce-MPI*6 : MPIを使用したMapReduceライブラリ → 今後マルチGPU化を行った上で,大規模グラフ処理における メモリ階層管理を模索 22 *1 : Malewicz, G. et al, “Pregel: A System for Large-Scale Graph Processing”, SIGMOD 2010. *2 : Gregor, D. et al, “The parallel BGL: A Generic Library for Distributed Graph Computations”, POOSC 2005. *3 : Harish, P. et al, “Accelerating large graph algorithms on the GPU using CUDA”, HiPC 2007. *4 : David A. Bader et al, “The Graph 500 List” *5 : Stuart, J.A. et al, “Multi-GPU MapReduce on GPU Clusters”, IPDPS 2011. *6 : Plimpton, S.J. et al, “MapReduce in MPI for Large-scale Graph Algorithms”, Parallel Computing 2011.
  • 23. まとめと今後の課題 • まとめ – GPUを使用したMapReduceによるグラフ処理 – PEGASUSとの比較 • PageRankアプリケーションにおいて,反復一回当たり 2.17 ~ 9.53倍の高速化 • 今後の課題 – 性能の改善 • ファイル入出力オーバーヘッドの削減 – GPUメモリに乗り切らない入力データへの対応 • グラフの構造を考慮した効率的なデータの割り振り • メモリ階層の管理 – GPUメモリ,CPUメモリ,SSD へ格納するデータのスケジューリング – マルチGPU化 • MPIによる複数ノード,マルチGPU処理 – Map,Shuffle,Reduceの前後にMPIによるデータ交換 23