25. 〈補足〉ハードウェア構成に関する考慮事項
FPGAエクストリーム・コンピューティング勉強会#10 (2018-02-18)25
▌課題
① CPUのP2P DMAルーティング性能
② マルチGPU環境への適用
① PCIeスイッチを介して
SSDとGPUが接続の場合
OK
② CPUがPCIeバスを管理し、
SSDにGPU直接接続の場合
Workable
③ SSDとGPUが互いに異なる
CPUに接続の場合
Not Supported
CPU CPU
PLX
SSD GPU
PCIeスイッチ
CPU CPU
SSD GPU
CPU CPU
SSD GPU
QPI
SSDとGPUのペアは、同一CPUまたはPLXの配下に接続されている必要がある
36. SCAN + JOIN + GROUP BY Combined Kernel (1/3)
Aggregation
GROUP BY
JOIN
SCAN
SELECT cat, count(*), avg(x)
FROM t0 JOIN t1 ON t0.id = t1.id
WHERE y like ‘%abc%’
GROUP BY cat;
count(*), avg(x)
GROUP BY cat
t0 JOIN t1
ON t0.id = t1.id
WHERE y like ‘%abc%’
実行結果
FPGAエクストリーム・コンピューティング勉強会#10 (2018-02-18)36
GpuScan
GpuJoin
Agg
+
GpuPreAgg
v2.0
PostgreSQLは集計クエリを何ステップかに分解して実行する。
データ受け渡し
データ受け渡し
37. SCAN + JOIN + GROUP BY Combined Kernel (2/3)
集約演算まで一気にGPU側で行ってしまう事で、
ロードすべきデータ量を極端に削減する事ができる。
GpuScan
kernel
GpuJoin
kernel
GpuPreAgg
kernel
Agg
(PostgreSQL)
GPU
CPU
Storage
実行
結果
GpuScan + GpuJoin + GpuPreAgg Combined Kernel
data size
= large
data size
= small
FPGAエクストリーム・コンピューティング勉強会#10 (2018-02-18)37
v2.0
Data
Blocks
38. SCAN + JOIN + GROUP BY Combined Kernel (3/3)
FPGAエクストリーム・コンピューティング勉強会#10 (2018-02-18)38
10GBのデータをスキャンして、
最終的にCPU側へ書き戻されたのは 1.2kB のみ。
v2.0