並列計算の現状と
産業応用について
伊野 文彦
大阪大学 大学院情報科学研究科
1
2017/2/10IoTと機械学習シンポジウム
並列計算とは?
1つの問題を複数の演算器で解くこと
計算時間の短縮による新しい価値観や方法論の創出
普通にできないことを可能にする!
例:超音速航空機による大阪・ニューヨーク間の日帰り旅行
2
並列計算機の変遷
需要のある市場なくして並列計算機は開発できない
NVIDIAによる民主化
並列でないプロセッサはもはやない
3
将来の超並列プロセッサを見据えた超並列アルゴリズムが必要
ベクトル機
国家の特注品
PCクラスタ
WINTELユーザの汎用品
GPU
PCゲーマーの特定汎用品
身の回りの並列処理
 逐次処理で100年かかるもの
天気予報
力学シミュレーション
DNA解析
機械学習
 秒単位の応答を必要とするもの
 可視化やPCゲーム
 ウェブ検索
 手術支援
 自動運転
4
手術シミュレーション可視化やPCゲーム
DNA解析
機械学習
台風シミュレーション
なぜGPUは速いのか?
 高スループット指向のハードウェア・プログラミングモデル
 高いメモリ帯域幅
 短い道路(短いメモリ遅延)よりも車線の多い道路
 大事なことは絶え間なくデータを演算器に供給し続けること
 高い並列性
 多くの車を道路に流せる
 逐次性の強いアルゴリズムはGPUでも遅い
 制約のあるプログラミングモデル
 スレッド単位のプログラムを記述
 制約:一部のスレッド間の依存を禁止 → メモリ遅延を隠蔽しやすい
5
メモリ
演算器
6
Digitally reconstructed
radiograph (DRR)
 Coordinates mapping by simulating X-ray projection in
data space [Lemieux94]
SimulationData
space
Real
space
X-ray
source
X-ray image
Position of the
real patient can
be estimated if
the DRR
matches the
X-ray image
Projection
Preoperative
CT volume
2-D/3-D 位置合わせ
GPU implementation7
GPU SideCPU Side
CT
volume
2-D
image
DRR
1) DRR
generation
Gradient
DRR
Gradient
image
2) Gradient image generation
Reduction
3) NCC computation
Similarity
evaluation
5 floating point numbers
P:
Position &
orientation
Input data
P
Minimize
communication
between CPU and GPU
Bottleneck
offloaded to GPU
Update
P
Data transfer
DRR generation
 Graphics-oriented solution: DRR generation from CT
volume is almost the same computation as volume
rendering
 We select the texture-based rendering method
[Cullip93], which exploits the hardware components in
the GPU
8
Viewing direction
CT volume
Volume slicing by
texture mapping
Screen
Slice composition by
alpha blending
Performance results
 GPU-based system
 Laptop PC (Dell Precision M70)
 CPU: Pentium 4 2.8-GHz
 GPU: NVIDIA Quadro FX Go 1400
Video memory: 256MB
 Cluster-based system
 Cluster of 64 PCs
 CPU: Dual Pentium 3 1-GHz
 Network: Myrinet-2000 (2 Gb/s)
9
1
GPU
1
CPU
128
CPUs
1) DRR (ms) 19 2940 142
2) Gradient
(ms)
4 142 7
3) NCC (ms) 28 9 46
Total per
iteration (ms)
51 3091 195
300 iterations 15 s 15 m 58 s
Cone beam reconstruction
 A technique for producing volume data
 Input data: a series of 2-D projections taken by CT scanner
 Output data: 3-D volume
 Feldkamp, Davis and Kress (FDK) algorithm
 Standard but memory-intensive reconstruction method
 135 s on a single-core CPU using SSE instructions
 Acceleration is needed for real-time imaging
 GPU (8.9 s), Cell B.E. (19 s), and FPGA (40 s)
10
Imaging Reconstruction
A series of 2-D projections Volume
Scan rotation
Cone beam CT
FDK algorithm
 Input/output data
 Input: a series of projections
 Output: Volume
 Filtering stage
 Convolution between projections
and Shepp-Logan filter
 Backprojection stage
 accumulates pixels on filtered
projections to voxels
 iterates accumulation for every projection
 has perfect parallelism between different voxels
11
Volume F
X-ray source
Filtered
projection
Qi
u
v
Interpolated
pixel (u,v)
Rotation
F(x,y,z) = ∑ Wi(x,y) Qi(u,v)
Volume Weight Projectioni
キャッシュ最適化 (1 of 2)
 一連のスレッドが担当する領域の形状を工夫
 任意の方向からの投影面積が小さくなるように形状を選定
12
逆投影時間 キャッシュヒット率(左L1,右L2)
キャッシュ最適化 (2 of 2)
 投影像に対する参照の局所性を高める
 投影角の違いが微小であれば,投影先の座標 (u,v) はほぼ同じ
 投影角ごとの2次元投影像を3次元データとして並べ替え
13
一連の2次元データ 並べ替え後の3次元データ
同一投影像内に
局所性がある
投影像間をまたいで
局所性がある
(u,v)
性能評価
 メモリスループットに関して実行効率を計測
14
GPU GeForce GTX 980 (Maxwell)
OS Fedora 22 64-bit
CUDA 7.5
0
50
100
150
200
250
512 1024 2048 1024 2048
Efficiency(%)
今回 従来
4秒 22秒 160秒 40秒 255秒
>100%なら
キャッシュが
効いている
文字列探索
テキスト𝑇𝑇 = 𝑡𝑡1 𝑡𝑡2 ⋯ 𝑡𝑡𝑛𝑛のうち,
パターン𝑃𝑃 = 𝑝𝑝1 𝑝𝑝2 ⋯ 𝑝𝑝𝑚𝑚が一致する部分を返すこと
加速を阻害する要因
GPU上の計算量=CPU・GPU間の転送量
計算の不規則性
袖つきのデータ並列計算
15
Text 𝑇𝑇: peach pie pen
Pattern 𝑃𝑃 : pen
match
𝑛𝑛
𝑚𝑚
1−m
Text
Thread 1
Thread 2
Thread 3 Thread 4
袖領域
数万スレッドが走るGPUで
高い効率を得るためには
袖の除去が不可欠
接頭辞和(prefix sums)問題に帰着
一見して逐次性が強そうだが並列に解ける問題
 i 番目までの和を配列 A[i] に格納
演算子 ⊕ が結合則を満たせば並列処理できる
袖を除去するアイデア
16
𝑥𝑥 ⊕ 𝑦𝑦 ⊕ 𝑧𝑧 ⇔ (𝑥𝑥 ⊕ 𝑦𝑦) ⊕ 𝑧𝑧
𝑛𝑛個の要素なら
𝑂𝑂(log 𝑛𝑛) ステップ
1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8
+
+ +
+
+ + +
+ +
+
+
性能評価
入出力データがGPU側にあることを仮定
17
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0 8 16 24 32 40 48 56 64
Throughput(Tbps)
Pattern size m
cuShiftOr
GBPR
GPU GeForce GTX TITAN X (Maxwell)
OS Windows 7 64-bit
CUDA 7.5
Tbpsオーダの
探索スループット
パターンが
1ワードに収まれば
性能は一定
既存手法は
パターン長とともに
性能低下
商品識別(深層学習応用)
セルフレジ
人件費節約(すかいらーく)
バーコードを付加できない生鮮食品
バーコードを探すのが手間
BakeryScan:レガシーな画像処理による識別
トレイ上のパンを天から撮影
山盛りはダメ
2017/2/10IoTと機械学習シンポジウム
18
深層学習による解法
 日常業務において学習データを容易に収集できる
 学習データ:画像とその正解ラベルの組
 GoogLeNet(22層)
 物体識別のための学習済みネットワーク:
畳込み層+プーリング層の反復と全結合層
 パラメータの初期値は乱数とした
19
Convolution
Pooling
Softmax
Other
http://www.image-net.org/challenges/LSVRC/2014/slides/GoogLeNet.pptx
ラベル:大根
処理の流れ
3台のウェブカメラ(正面,左下,右下)
による画像の取得
1280×720画素,30 fps
オプティカルフローによる
動きの検出
ダウンサンプリング(64×64画素)
学習時間を短縮するため
3方向の画像を1枚にまとめる
画像の連結
学習時間を短縮するため
20
ダウンサンプリング
動きの検出
推論(あるいは学習)
画像取得
画像の連結
あり
なし
識別器の構成21
GoogLeNet
ラベルごと
のスコア
複数視点画像
GoogLeNet
ラベルごと
のスコア
右下視点画像
GoogLeNet
ラベルごと
のスコア
正面視点画像
GoogLeNet
ラベルごと
のスコア
左下視点画像
ラベルごと
のスコア
+
連結版 独立版
識別器の評価
 9+3クラスの識別:大根,人参,玉葱,さつま芋,長葱,ゴ
ボウ,キャベツ,白菜,水菜 + カロリーメイト3種
 学習時間(GeForce GTX 980 Ti+cuDNN+Chainer)
連結版:2.8時間(3万枚の画像に対して150エポック)
連結版は独立版の1/3の時間で学習を完了
 交差検証による正答率
連結版 青果:98~99% カメ:92~95%
独立版 青果:99 % カメ:92~95%
単一版 青果:96~98% カメ:93~96%
 誤答の原因:撮影の死角や画像のブレ
22
並列処理が創造したもの
 実行時間の短縮
 術中の位置合わせ
 製造ラインにおける品質検査
 高速な機械学習
 頑健性の向上
 停電,ネットワーク断(PCクラスタ→ノートPC)
 新しい手段・価値の創造
 術中の安全性検証
 ヒトを超えるプレーヤ(識別,囲碁,異物検出,手術ロボット)
23
単なる高速化から価値を見出すことが成功の肝
まとめ
並列計算:計算時間の短縮だけでなく新しい価値観
や方法論を創出
医療現場などにおける並列処理の紹介
数万個もの並列性を活用できる超並列アルゴリズム
が大事
単なる高速化から価値を見出すことが成功の肝
2017/2/10IoTと機械学習シンポジウム
24
研究室のホームページ
2017/2/10IoTと機械学習シンポジウム
25
http://www-hagi.ist.osaka-u.ac.jp/
補足資料26
Shift-Or algorithm (1 of 2)
 非決定性オートマトンNFAに基づいて,ビット並列性を
活用する方法
 テキストから文字を1つ読み出すたびにNFAの状態を更新
 状態 𝑟𝑟𝑖𝑖 は,パターンにおける最初の 𝑖𝑖 文字までが一致している
ことを表す
 読み出した文字が一致するときのみ添え字 𝑖𝑖 が増える → シフト
27
𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3
p e n
*Pattern 𝑃𝑃 : pen
分岐の少なさが規則性の面で有利
Shift-Or algorithm (2 of 2)
 比較開始点をずらした,𝑚𝑚 個の比較器を同時に処理
 比較器の状態をビット列に格納して更新
28
Text 𝑇𝑇: peach pie pen
Bit 𝑟𝑟0: 10111110111011
Bit 𝑟𝑟1: 11011111111101
Bit 𝑟𝑟2: 11111111111110
Output: 1111111111110
𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3
p e n*
𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3
p e n*
𝑟𝑟0 𝑟𝑟1 𝑟𝑟2 𝑟𝑟3
p e n*
0が一致を表す𝑆𝑆𝑗𝑗 = �
1 𝑚𝑚 , if 𝑗𝑗 = 0
(𝑆𝑆𝑗𝑗−1≪ 1) ∣ 𝑀𝑀(𝑡𝑡𝑗𝑗) , if 𝑗𝑗 > 0
文字𝑡𝑡𝑗𝑗が一致するときのみシフトを許すビットマスク
結合則への対応
 シフト演算子 ≪ は結合則を満たさない
 𝒙𝒙 ≪ 𝒚𝒚 ≪ 𝒛𝒛 ⇎ 𝒙𝒙 ≪ (𝒚𝒚 ≪ 𝒛𝒛)
 しかし,結合則を満たす加算に置換可能
 𝒙𝒙 ≪ 𝒚𝒚 ≪ 𝒛𝒛 ⟺ 𝒙𝒙 ≪ 𝒚𝒚 + 𝒛𝒛
 つまり,シフトの幅 𝑦𝑦 + 𝑧𝑧 をあとで反映すればよい
29
𝑆𝑆𝑗𝑗 = �
1 𝑚𝑚 , if 𝑗𝑗 = 0
(𝑆𝑆𝑗𝑗−1≪ 1) ∣ 𝑀𝑀(𝑡𝑡𝑗𝑗) , if 𝑗𝑗 > 0
結合則を満たす演算子†30
𝑢𝑢1, 𝑣𝑣1 † 𝑢𝑢2, 𝑣𝑣2 = 𝑢𝑢1 + 𝑢𝑢2, (𝑣𝑣1≪ 𝑢𝑢2) ∣ 𝑣𝑣2
𝑢𝑢𝑗𝑗, 𝑣𝑣𝑗𝑗 = 0, 1 𝑚𝑚 † 1, 𝑀𝑀(𝑡𝑡1) † ⋯ † 1, 𝑀𝑀(𝑡𝑡𝑗𝑗−1) † 1, 𝑀𝑀(𝑡𝑡𝑗𝑗)
Text: pie
Pattern: pi
p i e
11 10 01 11 Mask
を使って,以下の 𝑣𝑣𝑗𝑗 を計算する
10 10 <<1
10 11
+ +
00 <<1
11
+
00 <<1
01
+
参考文献
 五味田遵, 合田圭吾, 川崎康博, 伊野文彦, 萩原兼一. ``汎用グラフィクス
ハードウェアを用いた2次元/3次元剛体位置合わせの高速化''. 情報処理学
会論文誌, Vol. 47, No. 10, pp. 2947--2958, (2006-10).
 Yuechao Lu, Fumihiko Ino, and Kenichi Hagihara. ``Cache-Aware
GPU Optimization for Out-of-Core Cone Beam CT Reconstruction of
High-Resolution Volumes''. IEICE Transactions on Information and
Systems, Vol. E99-D, No. 12, pp. 3060--3071, (2016-12).
 Yasuaki Mitani, Fumihiko Ino, and Kenichi Hagihara. ``Parallelizing
Exact and Approximate String Matching via Inclusive Scan on a
GPU''. IEEE Transactions on Parallel and Distributed Systems,
accepted.
31

機械学習とこれを支える並列計算 : 並列計算の現状と産業応用について