SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
1
In-place computing on PostgreSQL
~SQL as a shortcut of GPGPU~
NEC Business Creation Division
The PG-Strom Project
KaiGai Kohei <kaigai@ak.jp.nec.com>
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
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
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
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 datasetDatabase
Software to “manage”
database
DBMS = Database Management System
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-StromLocation of
the data
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
Timeconsumptionof
SQLqueryprocessing
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
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
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.
10
Supported Features
▌PG-Strom suggest GPU accelerated plan if above workloads.
▌Optimizer will choose cheaper execution plan if any.
GPU Technology Conference 2016 - In-place computing on PostgreSQL
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
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
QueryResponseTime[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
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
QueryResponseTime[sec]
Query Response Time by DBT-3 Benchmark (SF=30)
PostgreSQL v9.5 PG-Strom
GPU Technology Conference 2016 - In-place computing on PostgreSQL
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
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
Hotspot:Database
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
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
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
TimetorunF-test[sec]
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.
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.
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)
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
21
Next Challenge
GPU Technology Conference 2016 - In-place computing on PostgreSQL
×
Information Technology Drug Discovery
22
world of wetworld 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
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
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
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
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
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
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 100
TotalexecutiontimetopickupN-structures[sec]
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
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
30
Project Roadmap
GPU Technology Conference 2016 - In-place computing on PostgreSQL
201620172018
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
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:
• e-mail: kaigai@ak.jp.nec.com
• twitter: @kkaigai
GPU Technology Conference 2016 - In-place computing on PostgreSQL
32
THANK YOU!
The PG-Strom Development Team
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 lengthNo 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
Chunk2GPU Idle until Next Query
34
Backup: Be more aggressive!
GPU Technology Conference 2016 - In-place computing on PostgreSQL
SELECT kmeans_plus(matrix, 10)
FROM (SELECT matrix(c1, c2, ..., c42)
FROM chemical_master
WHERE <condition for scan>
GROUP BY <condition for grouping>;
This SQL function kicks
CUDA kernel internally
Transform millions of rows
into high-density & GPU
suitable 2D-array.
X =
▌Challenge (3) – Self-defined CUDA function on SQL
 Symptom – iteration by script and row-format make slowdown
 Solution – special tune by capability of self-defined CUDA
function, with simple 2D-array structure (matrix).
35
Backup: SSD-to-GPU under SQL execution
Ultimate “Near-Data Computing” than CPU/RAM
GPU Technology Conference 2016 - In-place computing on PostgreSQL
GPU SSD
CPU + RAM
PCI-E
Table
GPUcodegenerated
fromSQLonthefly
InnertableofJOIN
+
③ Make result
set on GPU
① SSDGPU
direct DMA
② Execution of SQL on GPU
(Select, Projection, Join)
④ GPURAM
Data Transfer
Traditional
Data Flow
New
Data Flow
36

Mais conteúdo relacionado

Mais procurados

GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...
GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...
GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...Kohei KaiGai
 
PG-Strom - GPU Accelerated Asyncr
PG-Strom - GPU Accelerated AsyncrPG-Strom - GPU Accelerated Asyncr
PG-Strom - GPU Accelerated AsyncrKohei KaiGai
 
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 AnalyticsKohei KaiGai
 
20171206 PGconf.ASIA LT gstore_fdw
20171206 PGconf.ASIA LT gstore_fdw20171206 PGconf.ASIA LT gstore_fdw
20171206 PGconf.ASIA LT gstore_fdwKohei KaiGai
 
Let's turn your PostgreSQL into columnar store with cstore_fdw
Let's turn your PostgreSQL into columnar store with cstore_fdwLet's turn your PostgreSQL into columnar store with cstore_fdw
Let's turn your PostgreSQL into columnar store with cstore_fdwJan Holčapek
 
PG-Strom v2.0 Technical Brief (17-Apr-2018)
PG-Strom v2.0 Technical Brief (17-Apr-2018)PG-Strom v2.0 Technical Brief (17-Apr-2018)
PG-Strom v2.0 Technical Brief (17-Apr-2018)Kohei KaiGai
 
PG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU devicePG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU deviceKohei KaiGai
 
20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - EnglishKohei KaiGai
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_ProcessingKohei KaiGai
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGISKohei KaiGai
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_IndexKohei KaiGai
 
GPGPU programming with CUDA
GPGPU programming with CUDAGPGPU programming with CUDA
GPGPU programming with CUDASavith Satheesh
 
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...Ural-PDC
 
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)Kohei KaiGai
 
20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdw20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdwKohei KaiGai
 
Easy and High Performance GPU Programming for Java Programmers
Easy and High Performance GPU Programming for Java ProgrammersEasy and High Performance GPU Programming for Java Programmers
Easy and High Performance GPU Programming for Java ProgrammersKazuaki Ishizaki
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLMasahiko Sawada
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA UnconferenceKohei KaiGai
 

Mais procurados (20)

GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...
GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...
GPU/SSD Accelerates PostgreSQL - challenge towards query processing throughpu...
 
PG-Strom - GPU Accelerated Asyncr
PG-Strom - GPU Accelerated AsyncrPG-Strom - GPU Accelerated Asyncr
PG-Strom - GPU Accelerated Asyncr
 
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
 
PostgreSQL with OpenCL
PostgreSQL with OpenCLPostgreSQL with OpenCL
PostgreSQL with OpenCL
 
20171206 PGconf.ASIA LT gstore_fdw
20171206 PGconf.ASIA LT gstore_fdw20171206 PGconf.ASIA LT gstore_fdw
20171206 PGconf.ASIA LT gstore_fdw
 
Let's turn your PostgreSQL into columnar store with cstore_fdw
Let's turn your PostgreSQL into columnar store with cstore_fdwLet's turn your PostgreSQL into columnar store with cstore_fdw
Let's turn your PostgreSQL into columnar store with cstore_fdw
 
PG-Strom v2.0 Technical Brief (17-Apr-2018)
PG-Strom v2.0 Technical Brief (17-Apr-2018)PG-Strom v2.0 Technical Brief (17-Apr-2018)
PG-Strom v2.0 Technical Brief (17-Apr-2018)
 
PG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU devicePG-Strom - A FDW module utilizing GPU device
PG-Strom - A FDW module utilizing GPU device
 
20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English20181212 - PGconfASIA - LT - English
20181212 - PGconfASIA - LT - English
 
20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing20201006_PGconf_Online_Large_Data_Processing
20201006_PGconf_Online_Large_Data_Processing
 
20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS20201128_OSC_Fukuoka_Online_GPUPostGIS
20201128_OSC_Fukuoka_Online_GPUPostGIS
 
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index20210301_PGconf_Online_GPU_PostGIS_GiST_Index
20210301_PGconf_Online_GPU_PostGIS_GiST_Index
 
GPGPU programming with CUDA
GPGPU programming with CUDAGPGPU programming with CUDA
GPGPU programming with CUDA
 
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
Applying of the NVIDIA CUDA to the video processing in the task of the roundw...
 
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
Technology Updates of PG-Strom at Aug-2014 (PGUnconf@Tokyo)
 
20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdw20181025_pgconfeu_lt_gstorefdw
20181025_pgconfeu_lt_gstorefdw
 
Debugging CUDA applications
Debugging CUDA applicationsDebugging CUDA applications
Debugging CUDA applications
 
Easy and High Performance GPU Programming for Java Programmers
Easy and High Performance GPU Programming for Java ProgrammersEasy and High Performance GPU Programming for Java Programmers
Easy and High Performance GPU Programming for Java Programmers
 
Bloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQLBloat and Fragmentation in PostgreSQL
Bloat and Fragmentation in PostgreSQL
 
20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference20181210 - PGconf.ASIA Unconference
20181210 - PGconf.ASIA Unconference
 

Destaque

SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)Kohei KaiGai
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1Kohei KaiGai
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?Kohei KaiGai
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8Kohei KaiGai
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpuKohei KaiGai
 
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 AnalyticsKohei KaiGai
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャKohei KaiGai
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesNed Potter
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging ChallengesAaron Irizarry
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with DataSeth Familian
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017Drift
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望Kohei KaiGai
 
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方Kosuke Kida
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Noriyoshi Shinoda
 
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 AnalyticsKohei KaiGai
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性Satoshi Nagayasu
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことTerui Masashi
 

Destaque (20)

SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)SQL+GPU+SSD=∞ (Japanese)
SQL+GPU+SSD=∞ (Japanese)
 
20170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#120170310_InDatabaseAnalytics_#1
20170310_InDatabaseAnalytics_#1
 
An Intelligent Storage?
An Intelligent Storage?An Intelligent Storage?
An Intelligent Storage?
 
20170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#820170127 JAWS HPC-UG#8
20170127 JAWS HPC-UG#8
 
pgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpupgconfasia2016 lt ssd2gpu
pgconfasia2016 lt ssd2gpu
 
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
 
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 
3 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 20173 Things Every Sales Team Needs to Be Thinking About in 2017
3 Things Every Sales Team Needs to Be Thinking About in 2017
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方[9.5新機能]追加されたgroupbyの使い方
[9.5新機能]追加されたgroupbyの使い方
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1Oracle Database Connect 2017 / JPOUG#1
Oracle Database Connect 2017 / JPOUG#1
 
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
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性In-Database Analyticsの必要性と可能性
In-Database Analyticsの必要性と可能性
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 

Semelhante a 20160407_GTC2016_PgSQL_In_Place

20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_EN20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_ENKohei KaiGai
 
20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQLKohei KaiGai
 
S51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdf
S51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdfS51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdf
S51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdfDLow6
 
20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multi20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multiKohei KaiGai
 
Advancing GPU Analytics with RAPIDS Accelerator for Spark and Alluxio
Advancing GPU Analytics with RAPIDS Accelerator for Spark and AlluxioAdvancing GPU Analytics with RAPIDS Accelerator for Spark and Alluxio
Advancing GPU Analytics with RAPIDS Accelerator for Spark and AlluxioAlluxio, Inc.
 
Postgre sql best_practices
Postgre sql best_practicesPostgre sql best_practices
Postgre sql best_practicesJacques Kostic
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingBravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingYaroslav Tkachenko
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...HostedbyConfluent
 
GPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
GPS Insight on Using Presto with Scylla for Data Analytics and Data ArchivalGPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
GPS Insight on Using Presto with Scylla for Data Analytics and Data ArchivalScyllaDB
 
GPU Accelerated Data Science with RAPIDS - ODSC West 2020
GPU Accelerated Data Science with RAPIDS - ODSC West 2020GPU Accelerated Data Science with RAPIDS - ODSC West 2020
GPU Accelerated Data Science with RAPIDS - ODSC West 2020John Zedlewski
 
SamzaSQL QCon'16 presentation
SamzaSQL QCon'16 presentationSamzaSQL QCon'16 presentation
SamzaSQL QCon'16 presentationYi Pan
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGaiKohei KaiGai
 
PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...
PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...
PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...Equnix Business Solutions
 
PGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various cloudsPGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various cloudsPGConf APAC
 
TechEvent PostgreSQL Best Practices
TechEvent PostgreSQL Best PracticesTechEvent PostgreSQL Best Practices
TechEvent PostgreSQL Best PracticesTrivadis
 
PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...
PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...
PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...AMD Developer Central
 
BlazingSQL & Graphistry - Netflow Demo
BlazingSQL & Graphistry - Netflow DemoBlazingSQL & Graphistry - Netflow Demo
BlazingSQL & Graphistry - Netflow DemoRodrigo Aramburu
 
RAPIDS – Open GPU-accelerated Data Science
RAPIDS – Open GPU-accelerated Data ScienceRAPIDS – Open GPU-accelerated Data Science
RAPIDS – Open GPU-accelerated Data ScienceData Works MD
 

Semelhante a 20160407_GTC2016_PgSQL_In_Place (20)

20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_EN20180920_DBTS_PGStrom_EN
20180920_DBTS_PGStrom_EN
 
20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL20181116 Massive Log Processing using I/O optimized PostgreSQL
20181116 Massive Log Processing using I/O optimized PostgreSQL
 
S51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdf
S51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdfS51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdf
S51281 - Accelerate Data Science in Python with RAPIDS_1679330128290001YmT7.pdf
 
20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multi20181016_pgconfeu_ssd2gpu_multi
20181016_pgconfeu_ssd2gpu_multi
 
RAPIDS Overview
RAPIDS OverviewRAPIDS Overview
RAPIDS Overview
 
Advancing GPU Analytics with RAPIDS Accelerator for Spark and Alluxio
Advancing GPU Analytics with RAPIDS Accelerator for Spark and AlluxioAdvancing GPU Analytics with RAPIDS Accelerator for Spark and Alluxio
Advancing GPU Analytics with RAPIDS Accelerator for Spark and Alluxio
 
Postgre sql best_practices
Postgre sql best_practicesPostgre sql best_practices
Postgre sql best_practices
 
Postgre sql best_practices
Postgre sql best_practicesPostgre sql best_practices
Postgre sql best_practices
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to StreamingBravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streaming
 
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
Bravo Six, Going Realtime. Transitioning Activision Data Pipeline to Streamin...
 
GPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
GPS Insight on Using Presto with Scylla for Data Analytics and Data ArchivalGPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
GPS Insight on Using Presto with Scylla for Data Analytics and Data Archival
 
GPU Accelerated Data Science with RAPIDS - ODSC West 2020
GPU Accelerated Data Science with RAPIDS - ODSC West 2020GPU Accelerated Data Science with RAPIDS - ODSC West 2020
GPU Accelerated Data Science with RAPIDS - ODSC West 2020
 
SamzaSQL QCon'16 presentation
SamzaSQL QCon'16 presentationSamzaSQL QCon'16 presentation
SamzaSQL QCon'16 presentation
 
20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai20190909_PGconf.ASIA_KaiGai
20190909_PGconf.ASIA_KaiGai
 
PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...
PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...
PGConf.ASIA 2019 Bali - Full-throttle Running on Terabytes Log-data - Kohei K...
 
PGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various cloudsPGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various clouds
 
TechEvent PostgreSQL Best Practices
TechEvent PostgreSQL Best PracticesTechEvent PostgreSQL Best Practices
TechEvent PostgreSQL Best Practices
 
PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...
PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...
PL-4044, OpenACC on AMD APUs and GPUs with the PGI Accelerator Compilers, by ...
 
BlazingSQL & Graphistry - Netflow Demo
BlazingSQL & Graphistry - Netflow DemoBlazingSQL & Graphistry - Netflow Demo
BlazingSQL & Graphistry - Netflow Demo
 
RAPIDS – Open GPU-accelerated Data Science
RAPIDS – Open GPU-accelerated Data ScienceRAPIDS – Open GPU-accelerated Data Science
RAPIDS – Open GPU-accelerated Data Science
 

Mais de Kohei KaiGai

20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_HistoryKohei KaiGai
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_APIKohei KaiGai
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrowKohei KaiGai
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_countKohei KaiGai
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0Kohei KaiGai
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCacheKohei KaiGai
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGISKohei KaiGai
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_OnlineKohei KaiGai
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdwKohei KaiGai
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_FdwKohei KaiGai
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_TokyoKohei KaiGai
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.JapanKohei KaiGai
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_BetaKohei KaiGai
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStromKohei KaiGai
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStromKohei KaiGai
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdwKohei KaiGai
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_FdwKohei KaiGai
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LTKohei KaiGai
 
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 BigDataKohei KaiGai
 
20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JPKohei KaiGai
 

Mais de Kohei KaiGai (20)

20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History20221116_DBTS_PGStrom_History
20221116_DBTS_PGStrom_History
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
 
20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow20211112_jpugcon_gpu_and_arrow
20211112_jpugcon_gpu_and_arrow
 
20210928_pgunconf_hll_count
20210928_pgunconf_hll_count20210928_pgunconf_hll_count
20210928_pgunconf_hll_count
 
20210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.020210731_OSC_Kyoto_PGStrom3.0
20210731_OSC_Kyoto_PGStrom3.0
 
20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache20210511_PGStrom_GpuCache
20210511_PGStrom_GpuCache
 
20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS20201113_PGconf_Japan_GPU_PostGIS
20201113_PGconf_Japan_GPU_PostGIS
 
20200828_OSCKyoto_Online
20200828_OSCKyoto_Online20200828_OSCKyoto_Online
20200828_OSCKyoto_Online
 
20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw20200806_PGStrom_PostGIS_GstoreFdw
20200806_PGStrom_PostGIS_GstoreFdw
 
20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw20200424_Writable_Arrow_Fdw
20200424_Writable_Arrow_Fdw
 
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
 
20191115-PGconf.Japan
20191115-PGconf.Japan20191115-PGconf.Japan
20191115-PGconf.Japan
 
20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta20190926_Try_RHEL8_NVMEoF_Beta
20190926_Try_RHEL8_NVMEoF_Beta
 
20190925_DBTS_PGStrom
20190925_DBTS_PGStrom20190925_DBTS_PGStrom
20190925_DBTS_PGStrom
 
20190516_DLC10_PGStrom
20190516_DLC10_PGStrom20190516_DLC10_PGStrom
20190516_DLC10_PGStrom
 
20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw20190418_PGStrom_on_ArrowFdw
20190418_PGStrom_on_ArrowFdw
 
20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw20190314 PGStrom Arrow_Fdw
20190314 PGStrom Arrow_Fdw
 
20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT20181212 - PGconf.ASIA - LT
20181212 - PGconf.ASIA - LT
 
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
 
20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP20180920_DBTS_PGStrom_JP
20180920_DBTS_PGStrom_JP
 

Último

Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfkalichargn70th171
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Copilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform CopilotCopilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform CopilotEdgard Alejos
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 

Último (20)

Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdfPros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
Pros and Cons of Selenium In Automation Testing_ A Comprehensive Assessment.pdf
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Copilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform CopilotCopilot para Microsoft 365 y Power Platform Copilot
Copilot para Microsoft 365 y Power Platform Copilot
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 

20160407_GTC2016_PgSQL_In_Place

  • 1. 1 In-place computing on PostgreSQL ~SQL as a shortcut of GPGPU~ NEC Business Creation Division The PG-Strom Project KaiGai Kohei <kaigai@ak.jp.nec.com>
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. 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 datasetDatabase Software to “manage” database DBMS = Database Management System
  • 6. 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-StromLocation of the data
  • 7. 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 Timeconsumptionof SQLqueryprocessing 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
  • 8. 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
  • 9. 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.
  • 10. 10 Supported Features ▌PG-Strom suggest GPU accelerated plan if above workloads. ▌Optimizer will choose cheaper execution plan if any. GPU Technology Conference 2016 - In-place computing on PostgreSQL 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
  • 11. 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 QueryResponseTime[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
  • 12. 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 QueryResponseTime[sec] Query Response Time by DBT-3 Benchmark (SF=30) PostgreSQL v9.5 PG-Strom GPU Technology Conference 2016 - In-place computing on PostgreSQL
  • 13. 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
  • 14. 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 Hotspot:Database
  • 15. 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
  • 16. 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
  • 17. 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 TimetorunF-test[sec] 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.
  • 18. 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.
  • 19. 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)
  • 20. 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
  • 21. 21 Next Challenge GPU Technology Conference 2016 - In-place computing on PostgreSQL × Information Technology Drug Discovery
  • 22. 22 world of wetworld 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
  • 23. 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
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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 100 TotalexecutiontimetopickupN-structures[sec] 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
  • 29. 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
  • 30. 30 Project Roadmap GPU Technology Conference 2016 - In-place computing on PostgreSQL 201620172018 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
  • 31. 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: • e-mail: kaigai@ak.jp.nec.com • twitter: @kkaigai GPU Technology Conference 2016 - In-place computing on PostgreSQL
  • 32. 32 THANK YOU! The PG-Strom Development Team
  • 33. 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 lengthNo 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 Chunk2GPU Idle until Next Query
  • 34. 34 Backup: Be more aggressive! GPU Technology Conference 2016 - In-place computing on PostgreSQL SELECT kmeans_plus(matrix, 10) FROM (SELECT matrix(c1, c2, ..., c42) FROM chemical_master WHERE <condition for scan> GROUP BY <condition for grouping>; This SQL function kicks CUDA kernel internally Transform millions of rows into high-density & GPU suitable 2D-array. X = ▌Challenge (3) – Self-defined CUDA function on SQL  Symptom – iteration by script and row-format make slowdown  Solution – special tune by capability of self-defined CUDA function, with simple 2D-array structure (matrix).
  • 35. 35 Backup: SSD-to-GPU under SQL execution Ultimate “Near-Data Computing” than CPU/RAM GPU Technology Conference 2016 - In-place computing on PostgreSQL GPU SSD CPU + RAM PCI-E Table GPUcodegenerated fromSQLonthefly InnertableofJOIN + ③ Make result set on GPU ① SSDGPU direct DMA ② Execution of SQL on GPU (Select, Projection, Join) ④ GPURAM Data Transfer Traditional Data Flow New Data Flow
  • 36. 36