CUDA-accelerated spatial query and operation

ssusereaac8d 11 views 40 slides Oct 29, 2017
Slide 1
Slide 1 of 40
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40

About This Presentation

CUDA-accelerated spatial query and operation


Slide Content

?g?? B10209047
@m?l
?W ?w
2016 / 06 / 22
GPU ACCELERATE SPATIAL JOIN
r?CUDA҇gtX~?jCF?
?xp! x}&
w?u??rD?

Outline
??QuadtreeL???s??8rg?256~1024;????un?;?s??8
L??s??8Minimum Boundary Rectangle?MBR?
L Z??uMinimum Boundary Rectangle?MBR?
r?xAsKMBRs?q~?j??C?Pairs?
r?xA??C?Pairs??qPoints in Polygon?PIP?N?bK

QUADTREE IN GPU
B??;X??xl??

Quadtree

Quadtree

Quadtree in GPU
0 1
0
1
1
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
1
1
K=3

Quadtree in GPU
0 1
0
1
1
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
1
1
9 4
K=3

Quadtree in GPU
0 1
0
1
0
1
01
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0
0
1
0
0
0
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
K=3

Quadtree in GPU
0 1
0
1
0
1
01
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
1
0
0
0
1
0
0
1
0
0
0
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
1
7
K=3

Quadtree in GPU
0
0
1
1
0
1
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
1
0
1
010101
K=3

Quadtree in GPU
0
1
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
1
0
1
0
1
01010101
K=3

; ?b???)
y,xAZ-Order Curveu?7y‰Y???Y?x????Transform?
u????r?xAZ-Index?qw?'?Sort By Key?
L?ys??Q]Z?Z?sesy
L?yqs??8????x? ?Reduce By Key?
Lw?~?j?? ?Expand?
9
x 8

; ??)?rg??;??Bd?]?x?r?Sortrg^? a Zd<7rP
?GPU?rgTransform??}??;?x:??z.R?rjSort1?;???}?z.x?X
r??rP?z.Xe??SortrgTransformv?v?rP
xl???)<???zSortrgr? Z?1Transform?P?d<7rP
xl???)

Quadtree in GPU (modified)
0
1
0
1
0
1
0
1
01010101
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1

0
1
0
1
0
1
0
1
01010101
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
Quadtree in GPU (modified)

?a Mask
AND ???v?
|v?Z
Reduce
??
'
Quadtree in GPU (modified)

0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
0
1
0
1
0
1
0
1
01010101
9 4
Quadtree in GPU (modified)
K=3

7
0
1
0
1
0
1
0
1
01010101
0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
Quadtree in GPU (modified)
K=3

0
1
0
1
0
1
0
1
01010101
0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
0
0
1
1
1
1
1
0
0
1
1
1
1
0
0
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
0
0
0
1
Quadtree in GPU (modified)
K=3

xl???)
y,xAZ-Order Curveu?7y‰Y???Y?x????Transform?
u????r?xAZ-Index?qw?'?Sort By Key?
L?ys??Q]Z?Z?sesy
L?yqs??8????x? ?Reduce By Key?
Lw?~?j?? ?Expand?
9
x 8
x 1
x 8

Comparison
; ?b??B?r?
Quadrant Level 1 2 3 4 5 6 7 8
Transformation 378
Sort 340
Update Mask 144 147 146 148 147 148 147 149
Reduce and Build Flag 170 172 174 173 174 174 176 173
Make Flag 60 62 61 63 59 60 61 61
Build Box 50
?qr?xlv?
Y9 3.5 A
Y9 7 A

Build
Minimum Boundary
Rectangles (MBRs)
B????Y~?

Breaking Down Quadrants Into Groups
0 1 1 2… 2 3 3 3 3 4… 4 5
sdYr
Group ID Counts Offset
Reduce By Key
Exclusive Scan

Breaking Down Quadrants Into Groups
x?Q Zts????x????B?8rg{?))sesyP?K=1024Quadrants
Level 1 234 567 8910111213141516
counts 0 336 556 371116212673138489
0
125
250
375
500
12345678910111213141516
{?)sd??…

Breaking Down Quadrants Into Groups
Quadrants ID0 1 2 3 4 5
Counts 1 29487458841
011 2… 23 33 34… 4 5
# 0 1 2… 2 2 3 4… 4 4 5
Counts 1 21000…100048741000…10008841
Reduce By Key
How ??
5
Quadrants
22
Groups

Breaking Down Quadrants Into Groups
Quadrants ID 0 1 2 3 4 5
Counts 1 29487458841
Quads ID 0 1 2 2 2 2 3 4 4 4 4 5
Counts 1 21000 48741000 8841
Reduce By Key
Counts 1 1 10 1 6 1
Offset 0 1 3 131420
Transform
Exclusive Scan
Scatter

Breaking Down Quadrants Into Groups
# 0 1 2 2 2 2 3 4 4 4 4 5
1 21000 48741000 8841
Scatter
# 0 1 2 2 2 2 3 4 4 4 4 5
1 21000…100048741000…10008841
Inclusive
Scan
Quads ID0 1 2 2 2 2 3 4 4 4 4 5
Counts1 21000…100048741000100010008841
Offset 0 1 3 …8003900394909494,,,134941449415378
Exclusive
Scan

MINIMUM BOUNDARY RECTANGLE OF POINTS ( NEW YORK TAXI )

MINIMUM BOUNDARY RECTANGLE OF BLOCKS ( NYC CENSUS 2010 )

PARTITION AND
PAIRING
bZ ns??CPUB???

Grid-File (IRGF) based Spatial Filtering
http://www-cs.ccny.cuny.edu/~jzhang/papers/irgf_dr.pdf

Pairs
polIdnPoloffsetPol nPoioffsetPoi
22052 31389 9 307728 1000 300675
206299 3379 7 26974 1000 7417981
43990 37461 35 442306 1000 2863386
24115 4060 6 32198 1000 1370498
57786 3973 5 31557 1000 2690327
Polygon_ID
31389
307728
..…
x -74.006……
y40.7112……
offsetPoi
9300675~301675

POINTS
IN POLYGON
TEST
Xb?s???B??

Code
bXa?Github

Execution time (1/10 Points)
GPU
0.1s
CPU
15.8 s
GPU
1.0 s
CPU
45.2 s
CPU
0.048s
GPU
0.45 s

Execution time (Estimate)
GPU
0.5s
CPU
100+
GPU
3.0 s
CPU
45.2 s
CPU
0.048s
GPU
4.5 s

Demo

Future work
r?GPUB??Partition and Pairing
Grid-file Based? R-Tree?
r?e?r??)?W??XL?y/IO?u?x??ʆ{x?????orgWw?nj???
u??^Thrust??sdr?CUBxlC
x?s?{x?D??????GISy0?sd?e_???
x?sx?~چ{x?

Conclusion
H? ?4

END
THANK YOU FOR YOUR ATTENTION