Upload
ryohei-kobayashi
View
131
Download
1
Embed Size (px)
Citation preview
FPGAを用いた世界最速の ソーティングハードウェアの
実現に向けた試み
小林 諒平† 吉瀬 謙二†
†東京工業大学 大学院情報理工学研究科
2015年06月19日 16:25-16:50 RECONF研究会(十周年記念)@京都大学吉田キャンパス FPGA応用および一般(1) 講演時間20分 + 質疑5分
l FPGAを用いた世界最速のソーティングハードウェアの実現に向けたアプローチを紹介
概要
1
世界の頂点
2
はじめに
l FPGAによる高速化の研究が注目されている
FPGAベースのソーティングシステム
3
データベース[1] 画像処理[2] データ圧縮[3]
[1] Rene Mueller et al, Sorting Networks on FPGAs, The VLDB Journal 2012 [2] Ratnayake, K et al, An FPGA Architecture of Stable-Sorting on a Large Data Volume : Application to Video Signals, CISS 2007 [3] Martinez, J et al, An FPGA-based parallel sorting architecture for the Burrows Wheeler transform ReConFig 2005
l スタンフォード大学のCasperらのシステムが 現在最も高性能 Ø FPGA2014で発表している ﹣ タイトル “Hardware Acceleration of Database Operation”
Ø 提案したシステムをXilinx Virtex-6 FPGA (XC6VSX475T)に実装し評価
l このシステムよりも高性能なハードウェアを実現するためのアプローチを紹介する
現在の世界最速のFPGAベースの ソーティングシステム
4
l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
5
l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
6
7
ベースとなる ソーティングアーキテクチャ
l 以下の2つのソーティングアーキテクチャを使用 Ø ソーティングネットワーク Ø マージソートツリー
ベースとなるアーキテクチャ*の概要
8
1
4
3
2
4
3
2
1 >
> >
ソーティングネットワーク
FPGA
マージソートツリー
* 小林諒平+,電子情報通信学会研究報告CPSY2015
l ワイヤ,コンパレータから構成される,数列をソートするネットワーク
l 例:4つの要素をソートするネットワーク Ø 小さい要素が上に,大きい要素が下に移動している
ソーティングネットワーク*
9
1
4
3
2
4
3
2
1
バブルソートのネットワーク
* Donald E. Knuth. The Art of Computer Programming. 1998.
l ソートセルを2分木状に接続することによって構成される,マージソートを実行するデータパス
マージソートツリー*
10
>
> >
FIFO
ソートセル >
4-way マージソートツリー
* Dirk Koch et al, FPGASort, FPGA’11
l マージソートツリーでソートが実行される様子 Ø 最左端のFIFOには必ずソートされたデータ系列が 格納される
マージソートツリーでのソート
11
>
> >
>
> >
>
> >
8 9 3 5
1 3 2 2 1
3
3 2 2
1 2
1
8 9 5
3 7 5
1 2
3
2
5
2 2 3 7 9 8
x
x: Invalid Value
Cycle N Cycle N+1 Cycle N+2
ベースとなる ソーティングアーキテクチャ
12
デバッグ用の モジュール
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
IN OUT
Host PC
DRAM
l データ型は32bitの整数型 Ø 512bitのワイヤでは16個の要素が並列に流れている
ベースとなる ソーティングアーキテクチャ
13 DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
FPGAとDRAM間におけるデータ幅とDRAMの周波数に 依存している
14
例:1~256のソーティング
l Initial Data Generatorから生成された 初期データをDRAMにライトする
1~256を昇順にソートする
15
256 255 254 … 64 63 … 3 2 1
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
l 降順の並びのデータ列がDRAMに書き込まれる Ø これを昇順にソートする
1~256を昇順にソートする
16
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
256 255 254 253 252
1
l DRAMから読み出してSorting Networkに 転送する
1~256を昇順にソートする
17
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
256 255 254
…
64 63 … 3 2 1
256 255 254 253 252
1
IN OUT
l Sorting Networkで16要素ずつソートされる Ø ソート済みのデータ列が16個できる
1~256を昇順にソートする
18
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
16 … 3 2 1 32 … 19 18 17 256 … 243 242 241
ソート済みのデータ列(16要素) 256 255 254 253 252
1
l Input Bufferに格納された後,Merge Sorter Treeに送られる
1~256を昇順にソートする
19
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
241 242 243 256… 225 226 240…
224… 208…
227 210 211 194 195
209 193
256 255 254 253 252
1
l Merge Sorter Treeの根からソートされた データ列が出力される
1~256を昇順にソートする
20
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
241 242 243 256… 226 227 240…
224… 208…
228 210 211 209
193 194 195
…
196 201
202
225
203
256 255 254 253 252
1
l 16要素ずつソートされたデータ列がマージされ,ソート済みのデータ列が4個できる
1~256を昇順にソートする
21
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
64 … 3 2 1 128 … 67 66 65 256 … 195 194 193
ソート済みのデータ列(64要素) 192 … 131 130 129 256
255 254 253 252
1
l Merge Sorter Treeから出力されたデータ列を DRAMにライトする
1~256を昇順にソートする
22
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
193 194 195 196 197 198 199 200 201 202 203 204 ……
この領域にライト 256 255 254 253 252
1
l データ列が完全にソートされていない (部分的にソートされた列が4つ) Ø 再び,Merge Sorter Treeに通す必要がある
1~256を昇順にソートする
23
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
256 255 254 253 252
1 193 194 195
62 63 64
l DRAMから読み出してSorting Networkに 転送する
1~256を昇順にソートする
24
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
193 194 195
…
129 130 … 62 63 64
この領域からリード 256 255 254 253 252
1 193 194 195
62 63 64
l このとき,Sorting Networkはただのデータの通り道 Ø 既に部分ごとのソートは実行されているため
1~256を昇順にソートする
25
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
256 255 254 253 252
1 193 194 195
62 63 64
l Input Bufferに格納された後,Merge Sorter Treeに送られる
1~256を昇順にソートする
26
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
256 255 254 253 252
1 193 194 195
62 63 64
193 194 195 256… 129 130 192…
128… 64…
131 66 67 2 3
65 1
l Merge Sorter Treeの根からソートされた データ列が出力される
1~256を昇順にソートする
27
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
256 255 254 253 252
1 193 194 195
62 63 64
64…
1 2 3
…
4
51 52
225
53
193 194 195 256… 129 130 192…
128… 131
66 67 65
l Merge Sorter Treeから出力されたデータ列を DRAMにライトする
1~256を昇順にソートする
28
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
1 2 3 4 5 6 7 8 9 10 11 12 ……
この領域にライト 256 255 254 253 252
1 193 194 195
62 63 64
l データ列が完全にソートされた Ø DRAM -> Sorting Network -> Merge Sorter Tree -> DRAMのパスを通す事でデータ列をソートできる ﹣ パスを通す回数:logway数(要素数/16)
1~256を昇順にソートする
29
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
1 2 3 4 5
256 193 194 195
62 63 64
l 完全にソートされたデータ列をHost PCに送信 Ø ソフトウェアとソート結果を比較してアクセラレータが正しく動作しているかを検証
1~256を昇順にソートする
30
DRAM
Host PC
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
DRAMの中身
1 2 3 4 5
256 193 194 195
62 63 64
この領域からリード
1 2 3 4
5 6 …
l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
31
32
マージソートツリーの 複製による高速化
マージソートツリーを複製した ソーティングアーキテクチャ
33
512-bit shift register 512-bit
shift register 512-bit
shift register
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512
1
64
FPGA
Duplicated Logics
512-bit shift register
l 複製の効果 Ø データ系列を分割してソートできる Ø ただし,最後は任意のツリーでマージしなければ ならない
マージソートツリーを複製した ソーティングアーキテクチャ
34
193 194 … 256 129 130 … 192 65 66 … 128 1 2 … 64
256 … 194 193 192 … 130 129 128 … 66 65 64 … 2 1 Initial Data Sequence
複製したツリーで並列にソート ツリー0 ツリー1 ツリー2 ツリー3
任意のツリーでマージ
1 2 3 4 5 6 7 8 … … … … 253 254 255 256 Sorting is done!!!
4-way マージソートツリーを4つ複製した場合のソーティング
l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
35
36
ソートセルの改良による高速化
l 1サイクルに4要素出力できるソートセル[Casper+, FPGA’14]
複数の要素を扱えるソートセル
37
>
l FIFO内の先頭の4つの要素において最小の値が比較される
ソートの様子 (Cycle 0)
38
> 2 4 6 8
3 3 5 7
2 4 6 8
10 12 14 16
11 13 17 19
l FIFOからデキューされた最初の要素は必ずソートセル内のレジスタに格納される
ソートの様子 (Cycle 0)
39
> 2 4 6 8
3 3 5 7
2 4 6 8
10 12 14 16
11 13 17 19
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 1)
40
>
3 3 5 7
2 4 6 8
11 13 17 19
10 12 14 16
18 20 22 24
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 1)
41
>
3 3 5 7
2
11 13 17 19
10 12 14 16
18 20 22 24
3
3 4
6 5
8 7 2
4 6 8
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 1)
42
>
3 3 5 7
2
11 13 17 19
10 12 14 16
18 20 22 24
3
3 4
6 5
8 7 2
4 6 8
最初の段で8つの要素における最小値と最大値が決定する
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 1)
43
>
3 3 5 7
2
11 13 17 19
10 12 14 16
18 20 22 24
3
3 4
6 5
8 7 2
4 6 8
残りの段を通過することで出力すべき要素と, フィードバックされる要素が決定する
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 1)
44
>
3 3 5 7
2
11 13 17 19
10 12 14 16
18 20 22 24
3
3 4
6 5
8 7 2
4 6 8
残りの段を通過することで出力すべき要素と, フィードバックされる要素が決定する
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 1)
45
>
3 3 5 7
2
11 13 17 19
10 12 14 16
18 20 22 24
3
3 4
6 5
8 7 2
4 6 8
残りの段を通過することで出力すべき要素と, フィードバックされる要素が決定する
l 小さい要素群が出力され,残りはレジスタに 格納される
ソートの様子 (Cycle 1)
46
>
3 3 5 7
5 6 7 8
11 13 17 19
10 12 14 16
18 20 22 24
2 3 3 4
l FIFOからデキューされた要素とフィードバックされた要素を比較して並び替える
ソートの様子 (Cycle 2)
47
>
5 6 7 8
11 13 17 19
10 12 14 16
18 20 22 24
23 29 31 37
10 12 14 16
l 小さい要素群が出力され,残りはレジスタに 格納される
ソートの様子 (Cycle 2)
48
> 5 6 7 8
11 13 17 19
10 12 14 16
18 20 22 24
23 29 31 37
10 12 14 16
l マージソートツリーのスループットが向上 l マージソートツリーの複製とセットで使える
複数の要素を扱えるソートセルの効果
49
>
l ベースとなるソーティングアーキテクチャ l マージソートツリーの複製 l ソートセルの改良 l ソーティング向けのデータ圧縮手法の提案
世界最速に向けたアプローチ
50
51
ソーティング向けのデータ圧縮手法
l ソーティングロジックのスループットを向上させればより高速にソートできる
l が,そのスループットを満たすメモリバンド幅の確保が問題となってくる
データ圧縮の必要性
52
l 圧縮の対象となるデータやそのデータを扱うアプリケーション,その圧縮による影響をうけるハードウェアを考慮して最適なアルゴリズムを決定する必要がある
データ圧縮のアルゴリズム
53
どのアルゴリズムがいいんだ?
Deflate圧縮? 辞書ベース圧縮?
l 我々はデータ間の差分を利用する圧縮アルゴリズム[Pekhimenko+, PACT’12]を利用
l なぜか? Ø ソーティングの対象となるデータ系列は,ソート処理が進むにつれて要素間の差分が小さくなるので,このアルゴリズムの恩恵を受けやすい
Ø 実装がシンプル ﹣ 単純なベクタ加算とベクタ減算
ソーティングに適した圧縮アルゴリズム
54
l 圧縮の対象となるデータは任意の値(Base)とそのベースとの差分(Δ)の配列で表現される
差分を利用したデータ圧縮/展開
55
V3 V2 V1 V0
V3 V2 V1 V0
4 Bytes
Base Δ1 Δ2 Δ3
4 Bytes
- - -
1B
Base Δ1 Δ2 Δ3
+ + +
Before
After
Before
After
(a) Compression (b) Decompression
データ圧縮/展開回路を組み込んだ データパス(実装中)
56
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512 1
64
FPGA
Decompressor
512 Compressor 512
追加するモジュール
データ圧縮/展開回路を組み込んだ データパス(実装中)
57
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512 1
64
FPGA
Decompressor
512 Compressor 512
追加するモジュール
ソートされたデータを圧縮して メモリに転送
データ圧縮/展開回路を組み込んだ データパス(実装中)
58
>
> >
32 32 32 32
32 32
32 32
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512-bit shift register
32
512
512
512
512
Input Buffer Merge Sorter Tree
512-bit shift register
Initial Data Generator
Sorting Network
512
512
512
512
DRAM Controller
UART Controller
Output Buffer 32 512 512
512 512
512
512 1
64
FPGA
Decompressor
512 Compressor 512
追加するモジュール
圧縮された データを展開
l 圧縮可能なブロックが2連続存在するなら, ひとつの512-bitのデータとしてまとめる Ø 全て圧縮可能ならメモリに転送するデータ量は1/2
データ圧縮を適用した概念
59
V15 V1 V0 V31 V17 V16 V47 V33 V32 V63 V49 V48
4 Bytes
Base0 Δ1 Δ15 Base16 Δ17 Δ31
Base32 Δ33 Δ47 Base48 Δ49 Δ63
Packing
Packing
512 bit
DRAM
512-bit
shift register
Output Buffer
32
512
512
Compressor 512
512 bit
60
現状のシステムと関連研究との比較
l マージソートツリーのway数 Ø 8
l ツリーの複製数 Ø 8
l ソートセルが扱える要素数 Ø 1
l データ圧縮機構 Ø なし
現状のシステムの構成
61
l 使用したプラットフォーム Ø Xilinx FPGA VC707評価キット
ハードウェアの実装(1/2)
62
Power In
UART Port
JTAG Port
DDR3 SO-DIMM DRAM (4GB*, 800MHz/1600Mbps)
* 評価ボード付属のメモリは1GB 800MHz/1600MbpsのDDR3 SO-DIMMメモリ
Virtex-7 VX485T FPGA
l Verilog HDLで回路を記述 l 論理合成ツールはVivado2014.4
Ø 合成オプションの設定はデフォルト l DRAMコントローラの実装
Ø Xilinxが提供しているIPコアを利用 l Initial Data Generator
Ø 疑似乱数生成器Xorshift*によるランダムな数列を 256M個生成
l 動作周波数 Ø ロジック:200MHz,DRAM:800MHz
ハードウェアの実装(2/2)
63 * George Marsaglia, Xorshift RNGs, Journal of Statistical Software 2003.
0
0.5
1
1.5
2
2.5
8-way/8-parallel Intel Core i7 4-core @ 3.2GHz 4k-way/2-parallel/4-scell
Throughput[GB/s]
現状のシステムの位置づけ
64
Performance of the fastest FPGA-based sorting hardware
*
* [Satish+, SIGMOD’10]
7x higher...
0
0.5
1
1.5
2
2.5
8-way/8-parallel Intel Core i7 4-core @ 3.2GHz 4k-way/2-parallel/4-scell
Throughput[GB/s]
現状のシステムの位置づけ
65
Performance of the fastest FPGA-based sorting hardware
*
* [Satish+, SIGMOD’10]
3.2x higher...
0
0.5
1
1.5
2
2.5
8-way/8-parallel Intel Core i7 4-core @ 3.2GHz 4k-way/2-parallel/4-scell
Throughput[GB/s]
現状のシステムの位置づけ
66
Performance of the fastest FPGA-based sorting hardware
*
* [Satish+, SIGMOD’10]
性能モデルから算出 4k-way/2-parallel/4-scell(データ圧縮あり) @200MHzなら関連研究と比較して約半分の ハードウェア量でほぼ同等の性能を達成可能
67
まとめと今後の課題
l FPGAを用いた世界最速のソーティングハードウェアの実現に向けたアプローチを紹介 Ø 2つの手法を組み合わせたベーシックなアーキテクチャ Ø マージソートツリーの複製 Ø ソートセルの改良 Ø データ圧縮
l 現状のシステムの性能(8-way/8-parallel) @ 200MHz Ø スループット:313MB/s
﹣ [Casper+, FPGA’14]と比較して約7倍低速 l 性能モデルによる見積もり
Ø 4k-way/2-parallel/4-scell(データ圧縮あり)@200MHzなら関連研究と比較して約半分のハードウェア量でほぼ同等の性能を達成可能 ﹣ 関連研究は8k-way/2-parallel @ 200MHzの構成
l 今後の課題
Ø ソーティング向けのデータ圧縮手法を実現する回路の実装 および検証
まとめと今後の課題
68