In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14...

35
1 In-place computing on PostgreSQL ~SQL as a shortcut of GPGPU~ NEC Business Creation Division The PG-Strom Project KaiGai Kohei <[email protected]>

Transcript of In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14...

Page 1: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

1

In-place computing on PostgreSQL

~SQL as a shortcut of GPGPU~

NEC Business Creation Division

The PG-Strom Project

KaiGai Kohei <[email protected]>

Page 2: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

2

Subject of my talk

Where is better location to compute?

Local Computing

In-place Computing

DATA EXPORT

Knowledge

Knowledge

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Location of the source data

Location of the source data

Page 3: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

3

about In-place Computing

In-place Computing

Knowledge

▌Advantage

Less amount of data transfer

Utilization of server grade hardware capability

Analytics towards the latest dataset

▌Disadvantage

Server needs to have sufficient computing resource.

distributed system is also an option, like Hadoop

Server software needs to be designed for data processing.

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Location of the source data

Page 4: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

4

Who Am I?

▌name: KaiGai Kohei

▌mission: Development of GPU acceleration feature (PG-Strom) for PostgreSQL, and its business related stuff

▌company: NEC

▌background:

about 10 years experiences in PostgreSQL developer community

various contributions to the PostgreSQL core:

• Security-Enhanced PostgreSQL (sepgsql), Security Barrier View, Writable FDW, Remote Join, Custom Scan/Join interface, ...etc...

Joined to GPU/CUDA development since 2012

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 5: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

5

DBMS ≠ Database, as literal

▌Optimized to store/reference fraction of the dataset scattered on the storage system (e.g indexing, ...)

▌Not designed for massive calculation as primary purpose

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Collection of dataset Database

Software to “manage” database

DBMS = Database Management System

Page 6: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

6

Dogma of data processing close to the data location

PG-Strom is an extension of PostgreSQL,

to adds data processing capability using GPU

▌DBMS is the best software platform for data processing, if we could add reasonable computing capability.

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Database

Database Management + Processing Capability

PG-Strom Location of the data

Page 7: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

7

Overview of PG-Strom

▌Two core ideas

GPU Native Code Generation on the fly

Fully utilization of PostgreSQL infrastructure

▌Advantages

CPU intensive SQL: OLAP, Reporting, Batch, Calculation, ...

Continuity of application and user’s skill

Inexpensive solution using OSS + GPU

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Tim

e c

onsum

ption o

f SQ

L q

uery

pro

cessin

g

by I/O

by CPU

by I/O

by CPU sequential

by GPU

by I/O

by CPU sequential

by CPU parallelizable

GPU will take parallelizable workloads,

CPU focuses on what only CPU can do

By an extension of PostgreSQL

Page 8: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

8

Core ideas (1/2) – Native GPU code generation on the fly

GPU Technology Conference 2016 - In-place computing on PostgreSQL

QUERY: SELECT cat, count(*), avg(x) FROM t0 WHERE x between y and y + 20.0 GROUP BY cat;

:

STATIC_FUNCTION(bool)

gpupreagg_qual_eval(kern_context *kcxt,

kern_data_store *kds,

size_t kds_index)

{

pg_float8_t KPARAM_1 = pg_float8_param(kcxt,1);

pg_float8_t KVAR_3 = pg_float8_vref(kds,kcxt,2,kds_index);

pg_float8_t KVAR_4 = pg_float8_vref(kds,kcxt,3,kds_index);

return EVAL((pgfn_float8ge(kcxt, KVAR_3, KVAR_4) &&

pgfn_float8le(kcxt, KVAR_3, pgfn_float8pl(kcxt, KVAR_4, KPARAM_1))));

} :

E.g) Mathematical formula in SQL into CUDA code on the fly

Reference to input data

SQL expression in CUDA source code

Run-time

Compiler

(nvrtc)

Just-in-time Compile

Parallel Execution

Page 9: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

9

Core ideas (2/2) – Fully Utilization of PostgreSQL Infrastructure

GPU Technology Conference 2016 - In-place computing on PostgreSQL

database applications

Storage

GPU

Query Executor

Query Optimizer

SQL Parser

Storage Manager

In-house Application

Business Intelligence

Reporting

SSD

PG-Strom Extension

no query changes

no schema changes

Custom Plan Interface

No change of SQL syntax

SQL parser break down the given query string into internal parse-tree structure. PG-Strom references only internal tree and don’t required any special syntax enhancement.

No change of Data Schema

PG-Strom never requires special storage format more than what PostgreSQL currently has. It eliminates necessity of application modification and extra administrations.

No patch of PostgreSQL

Custom plan interface allows to inject alternative query execution paths, then executes them if estimated cost is reasonable then built-in implementation. PG-Strom can be installed on the PostgreSQL now we’re operating.

Page 10: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

10

Supported Features

▌PG-Strom suggest GPU accelerated plan if above workloads.

▌Optimizer will choose cheaper execution plan if any.

PG-Strom Preview (For Multicore Dynamics)

SELECT c.category,

max((x.p1 – y.p1)^2 + ... + (x.p10 – y.p10)^2) dist

FROM sample_data x

JOIN sample_data y ON x.id < y.id

JOIN category c ON x.cat_id = c.cat_id

WHERE x.date BETWEEN ‘2010-01-01’::date AND NOW()::date

AND x.quality > 0.8

GROUP BY c.category;

②GpuJoin:

N-way parallel Join

③GpuScan: Scan with WHERE clause

①GpuProjection:

Query with calculations

④:GpuPreAgg:

Aggregation/GROUP BY

Page 11: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

11

Benchmark (1/2) – JOIN + GROUP BY on microbenchmark

▌QUERY:

SELECT cat, AVG(x) FROM t0 NATURAL JOIN t1 [, ...] GROUP BY cat; t0: 100M rows, t1~t10: 100K rows for each, all the data was preloaded.

▌Environment: PostgreSQL v9.5b + PG-Strom (4-Feb), CUDA 7.5 + CentOS 7(x86_64)

CPU: Xeon E5-2670v3, RAM: 384GB, GPU: NVIDIA GTX980 (2048cores)

0

50

100

150

200

250

300

2 3 4 5 6 7 8 9

56.33

79.03

104.41

129.80

154.08

187.40

234.53

282.87

12.15 12.86 12.93 13.14 13.42 13.90 15.69 18.81 Qu

ery

Re

spo

nse

Tim

e [

sec]

Number of tables joined

Query Response Time towards Number of Tables Joined

PostgreSQL v9.5 PG-Strom

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 12: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

12

Benchmark (2/2) – DBT-3, OLAP Benchmark

▌about DBT-3 benchmark: Clone of TPC-H benchmark, an open source edition.

Simulate various reporting queries on large retail industry.

▌Note: Same test environment with last page

Light-blue-colored bar involves no GPU execution due to query optimization

Q21 in PostgreSQL didn’t finish 2Hr, so I tuned the parameter by hand

0

50

100

150

200

Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22

Qu

ery

Res

po

nse

Tim

e [s

ec]

Query Response Time by DBT-3 Benchmark (SF=30)

PostgreSQL v9.5 PG-Strom

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 13: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

13

Workloads characteristics

OLTP OLAP In-place

Computing

I/O Large (read+write

hybrid)

Small (mostly read)

Tiny (mostly read)

CPU Small, sequential

Large, parallelizable

Large, parallelizable

Typical SQL index accesses, UPDATE, INSERT,...

JOIN, GROUP BY, SORTING, ...

Numerical Calculations, ...

Concurrency Massive Small Tiny

KPI Latency Throughput Latency + Throughput

For PG-Strom

Not help Originally Designed for

New Challenge

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 14: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

14

Test Scenario of In-place computing

GPU Technology Conference 2016 - In-place computing on PostgreSQL

DATA EXPORT

Result

Result

Result

R as user interface

Local Computing

PostgreSQL

PostgreSQL + PG-Strom

Hotspot: NW+CPU

Hots

pot: D

ata

base

Page 15: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

15

First Challenge – F-Test

▌F-Test

A method for analysis of variance

Checks the ratio of sample variance of two groups

If same variance, its ratio shall follow F-distribution at statistically reasonable area.

Sample variances, # of items are needed.

▌Data Set

Heterogeneity Activity Recognition Data Set – http://archive.ics.uci.edu/ml/datasets/Heterogeneity+Activity+Recognition

records of accelerometer and gyroscope of mobile device

includes anonymized user-id, model of device, user’s act

43.9M rows, 3.3GB in total

GPU Technology Conference 2016 - In-place computing on PostgreSQL

F-distribution

Page 16: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

16

▌By Local R-script

# Obtain dataset from database conn <- dbConnect(PostgreSQL()) sql <- "SELECT model, x, y, z FROM phones_accelerometer" r <- dbGetQuery(conn, sql) dbDisconnect(conn) # Pickup ‘s3mini’ items cond <- r[['model']] == 's3mini’ s3mini <- r[cond,] # Pickup ‘nexus4’ items cond <- r[['model']] == ‘nexus4’ nexus4 <- r[cond,] # Run F-test on two variances result <- var.test(s3mini[['x']]+ s3mini[['y']]+ s3mini[['z']], nexus4[['x']]+ nexus4[['y']]+ nexus4[['z']])

▌By SQL

# Send query to get variances and # number of items conn <- dbConnect(PostgreSQL()) sql <- “SELECT count(*), variance(x+y+z) var FROM phones_accelerometer GROUP BY model HAVING model = ‘nexus4’ OR model = ‘s3mini’” r <- dbGetQuery(conn, sql) dbDisconnect(conn) # Fetch the result lbound <- qf(0.025, v[1,'count']-1, v[2,'count']-1) ubound <- qf(0.975, v[1,'count']-1, v[2,'count']-1) fv <- v[1, ’var’] / v[2, ’var’] # Set result result <- c(lbound, fv, ubound)

Code for F-Test

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 17: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

17

Test results

Difference of accelerometer between ‘nexus4’ and ‘s3mini’

▌Nexus と S3mini間で差がないか調べる。

GPU Technology Conference 2016 - In-place computing on PostgreSQL

> pgsql_ftest(0.05)

[1] 0.9978336 1.0018144 1.0021688

𝐹𝑙𝑜𝑤𝑒𝑟 = 0.9978336, 𝐹 = 1.0018144, 𝐹𝑢𝑝𝑝𝑒𝑟 = 1.0021688

𝐹𝑙𝑜𝑤𝑒𝑟 ≤ 𝐹 ≤ 𝐹𝑢𝑝𝑝𝑒𝑟 These two group have likely same variances.

1.666

30.79

4.09 1.75

0

5

10

15

20

25

30

35

by R-script by PostgreSQL by PG-Strom

Tim

e t

o r

un

F-t

est

[se

c]

Time to run F-test for each method

Time to execute R-Script Time for Query/Download

Most of time consumption is data download from PostgreSQL database.

Page 18: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

18

Adjustment of the test hypothesis

No difference in models, How about people’s act?

GPU Technology Conference 2016 - In-place computing on PostgreSQL

SELECT gt, count(*), variance(x+y+z) var FROM phones_accelerometer GROUP BY gt HAVING gt = ‘walk’ OR gt = ‘bike’

> pgsql_ftest(0.05)

[1] 0.9979628 2.1744231 1.0020435

𝐹𝑙𝑜𝑤𝑒𝑟 = 0.9979628, 𝐹 = 2.1744231, 𝐹𝑢𝑝𝑝𝑒𝑟 = 1.0020435

𝐹𝑢𝑝𝑝𝑒𝑟 ≪ 𝐹 These two groups likely have different variances.

Page 19: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

19

Adjusted Query and GPU code on the fly (1/2)

GPU Technology Conference 2016 - In-place computing on PostgreSQL

mobile=# EXPLAIN SELECT gt, count(*), variance(x+y+z) var FROM phones_accelerometer GROUP BY gt HAVING gt = 'walk' or gt = 'bike'; QUERY PLAN ------------------------------------------------------------------- HashAggregate (cost=255006.21..255006.25 rows=3 width=30) Group Key: gt -> Custom Scan (GpuPreAgg) on phones_accelerometer (cost=10063.55..215505.32 rows=255 width=56) Reduction: Local + Global GPU Projection: index, arrival_time, creation_time, x, y, z, user_id, model, device, gt GPU Filter: ((gt = 'walk'::text) OR (gt = 'bike'::text)) Kernel Source: /opt/..<snip>../pgsql_tmp_strom_118438.5.gpu (6 rows)

Page 20: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

20

Adjusted Query and GPU code on the fly (2/2)

GPU Technology Conference 2016 - In-place computing on PostgreSQL

% cat /opt/pgsql/kaigai/base/pgsql_tmp/pgsql_tmp_strom_118438.5.gpu : : STATIC_FUNCTION(bool) gpupreagg_qual_eval(kern_context *kcxt, kern_data_store *kds, size_t kds_index) { pg_text_t KPARAM_1 = pg_text_param(kcxt,1); pg_text_t KPARAM_2 = pg_text_param(kcxt,2); pg_text_t KVAR_10 = pg_text_vref(kds,kcxt,9,kds_index); return EVAL((pgfn_texteq(kcxt, KVAR_10, KPARAM_1) || pgfn_texteq(kcxt, KVAR_10, KPARAM_2))); } : : Equivalent to the condition in SQL:

gt = 'walk' or gt = 'bike'

constant values: ‘walk’ and ‘bike’

column ‘gt’ in this record

Page 21: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

21

Next Challenge

GPU Technology Conference 2016 - In-place computing on PostgreSQL

×

Information Technology Drug Discovery

Page 22: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

22

world of wet world of dry

Background (1/2) – Diversified Chemical Structures Library

▌To be avoided...

Taking experiment on multiple but similar chemical components

▌Requirement

Pick up small number of items from the database

Each chemical structure are “different” as possible as we can

GPU Technology Conference 2016 - In-place computing on PostgreSQL

chemical structures database

Pick up small samples

Investigation at the Lab

More than million items

Page 23: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

23

Background (2/2) – Chemical structures representation

Molecular Quantum Numbers (MQN)

A vector of 42 descriptor which represents

characteristics of chemical structures

Quote: J.Chem.Inf.Model, 2013, 53, 509–518

2D structure List of the descriptors

A vector of 42 descriptors

1. c (carbon) 2. f (fluorine) 3. cl (chlorine) 4. br (bromine) 5. i (iodine) 6. s (sulfur) 7. p (phosphorous) 8. an (acyclic nitrogen 9. cn (cyclic nitrogen) 10. ao (acyclic oxygen) 11. co (cyclic oxygen) 12. hac (heavy atoms) 13. asb (acyclic single bonds) 14. adb (acyclic double bonds) 15. atb (acyclic triple bonds)

16. csb (cyclic single bonds) 17. cdb (cyclic double bonds) 18. ctb (cyclic triple bonds) 19. rbc (rotatable bonds) 20. hbam (H-bond acceptor sites) 21. hba (H-bond acceptor atoms) 22. hbdm (H-bond donor sites) 23. hbd (H-bond donor atoms) 24. negc (negative charges) 25. posc (positive charges) 26. asv (acyclic single valent nodes) 27. adv (acyclic divalent nodes) 28. atv (acyclic trivalent nodes) 29. aqv (acyclic tetravalent nodes) 30. cdv (cyclic divalent nodes)

31. ctv (cyclic trivalent nodes) 32. cqv (cyclic tetravalent nodes) 33. r3 (3-membered rings) 34. r4 (4-membered rings) 35. r5 (5-membered rings) 36. r6 (6-membered rings) 37. r7 (7-membered rings) 38. r8 (8-membered rings) 39. r9 (9-membered rings) 40. rg10 ( 10-membered rings) 41. afrc (nodes shared by 2 rings) 42. bfrc (edges shared by 2 rings)

(20, 0, 0, 0, 0, 0, 0, 1, 0, 4, 0, 0, 12, 2, 0, 6, 6, 0, 9, 9, 5, 1, 1, 0, 0, 5, 5, 3, 0, 8, 4, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0)

GPU Technology Conference 2016 - In-place computing on PostgreSQL

© Institute for Theoretical Medicine, Inc, 2016

Page 24: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

24

Workload – MAX-MIN Method

Random selection of the first item

Pick up 2nd item; the largest distance

from the 1st

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 25: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

25

Workload – MAX-MIN Method

GPU Technology Conference 2016 - In-place computing on PostgreSQL

minimum distance from the selected items

Pick up 3rd item; the largest

minimum distance

Page 26: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

26

Workload – MAX-MIN Method

GPU Technology Conference 2016 - In-place computing on PostgreSQL

minimum distance from the selected items

Pick up 4th item; the largest

minimum distance

Page 27: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

27

Reference) Query for MAX-MIN method

GPU Technology Conference 2016 - In-place computing on PostgreSQL

WITH next_item AS ( INSERT INTO pg_temp.subset_table ( SELECT r.* FROM mqn r, (SELECT id FROM pg_temp.dist_table ORDER BY dist DESC LIMIT 1) d WHERE r.id = d.id) RETURNING * ) SELECT r.id, LEAST(d.dist, sqrt((r.c1 - n.c1)^2 + (r.c2 - n.c2)^2 + : (r.c41 – n.c41)^2 + (r.c42 - n.c42)^2)) dist

INTO pg_temp.dist_table_new FROM pg_temp.dist_table d, next_item n, mqn r WHERE r.id = d.id

Hot point of the SQL query

Page 28: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

28

Benchmark Results – MAX-MIN Method

▌Summary

10M rows, 211MB in total

workload characteristics: 𝑊𝐼/𝑂 ≪𝑊𝐶𝑃𝑈

If no GPU support, calculation in RDBMS cannot be an option.

PG-Strom recorded similar performance with download + R-script.

GPU Technology Conference 2016 - In-place computing on PostgreSQL

0

100

200

300

400

500

600

0 20 40 60 80 100Tota

l exe

cuti

on

tim

e t

o p

ick

up

N-s

tru

ctu

res

[se

c]

Number of chemical structures to be picked up

Time to choose N-chemical structures using MAX-MIN method

by PG-Strom by PostgreSQL by Local CPU

Page 29: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

29

Conclusion

▌Advantages

New usage of RDBMS, by integration of GPU capability.

No more CSV dump to process statistical data. (also, analytics towards the latest data)

SQL can be a way to alternate GPU programming for parallel-data processing.

Inexpensive solution due to OSS + GPU

▌Future challenges

Packaging for R, to run major analytic algorithm on database.

More performance, than similar to local R-script.

• Ideas) CPU+GPU hybrid parallel, SSD to GPU direct, columnar support

Procedural Language support

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 30: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

30

Project Roadmap

GPU Technology Conference 2016 - In-place computing on PostgreSQL

20

16

2

01

7

20

18

PostgreSQL 9.5

Custom-Plan Interface :

PostgreSQL 9.6

CPU Parallel Query Execution Combined Aggregation Upper Path Optimization :

PostgreSQL 9.7

Native Columnar Storage Native Partitioning Support :

PG-Strom 1.0

The first release that support primitive data types and workloads.

PG-Strom 1.1

Multi-backend concurrency improvement Extra operators & functions support

PG-Strom 2.0

CPU+GPU Hybrid Parallel SSD-to-GPU Direct Support More graceful query optimization Enterprise grade SW quality

PG-Strom 3.0(?)

Columnar storage support 3rd party extensions support Self defined CUDA function

Page 31: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

31

Resources

▌Source Code

https://github.com/pg-strom/devel

▌Documentations

http://strom.kaigai.gr.jp/manual.html

▌Questions

Issue tracker:

• https://github.com/pg-strom/devel/issues

Direct contact:

[email protected]

GPU Technology Conference 2016 - In-place computing on PostgreSQL

Page 32: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

32

THANK YOU!

The PG-Strom Development Team

Page 33: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

33

▌Challenge (1) – Cost to access datum in record

Symptom: row-format is worst data structure for GPU

Solution: columnar-format; planned for PostgreSQL v9.7

Backup: What we could learn from the workload

GPU Technology Conference 2016 - In-place computing on PostgreSQL

HeapTuple Header

NULL bitmap

(if has NULL)

OID of row (if exists)

1st column 3rd column 4th column

Format of PostgreSQL Record may be variable length No datum if NULL

▌Challenge (2) – Less Concurrent Multiprocessing Gain

Symptom: Each iteration is blocked by the client script

Solution: Implement entire iteration with SQL/SQL function

Scan Chunk1

GPU

CPU Scan

Chunk2

Exec Chunk1

Exec Chunk2

Response to Client

Parse&Optimize Next Query

Scan Chunk1

Scan Chunk2

Response to Client

Exec Chunk1

Exec Chunk2 GPU Idle until Next Query

Page 34: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

34

Backup: SSD-to-GPU under SQL execution

Ultimate “Near-Data Computing” than CPU/RAM

PG-Strom Preview (Feb-2016)

GPU SSD

CPU + RAM

PCI-E

Table

GPU

code g

enera

ted

from

SQ

L o

n t

he f

ly

Inner

table

of

JOIN

+

③ Make result set on GPU

① SSDGPU direct DMA

② Execution of SQL on GPU (Select, Projection, Join)

④ GPURAM Data Transfer

Existing Data Flow

New Data Flow

Page 35: In-place computing on PostgreSQL · 2016-04-07 · Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec] Query Response Time by DBT-3 Benchmark (SF=30)

35