You are on page 1of 33

Speakers Biography Databases & GPUs Problem Definition SQL Data Types SQL Stored Procedures System Overview

Solution Architecture Image Processing File Formats

Agenda

Compression/Decompression GPU Image Support Image Processing Techniques

Speakers Bio
CEO 3DMashUp Start-Up focused on GPU Accelerated DBMS

4+ years GPU and HPC Programming Developed large databases Navteq Street Maps NASA EOSDIS Climate Research DBMS LINZ ( Land Info New Zealand)
Formerly VP Engineering Oracle VP Engineering BEA Systems VP Engineering Informix

What are we Solving For?

Database & GPUs


Internal Operations
GPU Accelerated Applications

Query Planning/ Optimizer

Image Processing

Medical Remote Sensing Climate Research

Fastest Route

Relational Operations

Select Project Join

In-Database Analytics

Predictive Analytics

Risk Management

3D Content Management

GIS CAD

Ordering

Sorting Group By

Additive Printing Artificial Reality

SQL Data Types

Rows

GPU Types (22)

Set of Columns

Vectors

Tables

Uchar N, Integer16 N, Integer 32 N, Double N, Float N,

Images

Set of Rows

TimeSeries, Image2D, JPEG

Columns Types

Metadata

N D Range, Image Sampler, LocalStorage

Standard types

Numbers, Text, Boolean, URL, XML, Date Time .

BLOB

Binary File Stream ( Read/Write, Seek operations )

SQL Type Examples


Create Table Images ( Id Name Path Image Thumbnail WorkImage Histogram serial not null, text not null, uri not null, OpenCL.jpeg not null, OpenCL.jpeg, OpenCL.Image2D, TimeSeries,

Database Image Storage Options

SMART-BLOB, BLOBS

Opaque Binary File Stream Unlogged/Logged

Tables

Byte Areas Logged Unlogged Tables

External Files

Store File Path SQL Server Filestream

Image Storage Comparison


ACID SMART BLOB BLOB Logged Table Unlogged Table External File FileStream Yes No Yes No No Yes Size SoD SoD ~1G ~1G SoD SoD Integrated Queryable Back-Up Yes No Yes Yes No ?? Yes Yes Yes Yes No Yes Encryption Manual Manual Optional Optional Manual No GPU Replication Query ?? No No Yes Yes No No No Yes No No No

SQL UDFs (User Defined Functions)

Functions called by SQL Queries or Triggers Many SQL UDF Language Bindings

TSQL, PLSQL, SQL, C/C++, Perl, Ruby, R, Java, ..

Implements natural Map-Reduce paradigm Can implement Internal DB operations

Views, Sorts, Joins,

GPU Language Bindings

OpenCL, CUDA

SQL UDF Examples


-An OpenCL UDF Histogram256( Input image image2d, Create Function output histogram256 Timeseries ) as $body$ Kernel void Histogram256( read_only image2d_t write_only { } $body$ language pgopencl; -A CUDA UDF image integer[], * image,

Timeseries * histogram )

Create Function CudaHistogram256 ( input output histogram integer[] )

As PTX file name language pgcuda;

SQL GPU Query


-Insert New Data Insert into images ( image, name, path) values ( ); -Query Creates Histogram and a Thumbnail

Update Images set histogram = histogram256( imaged::image2d, histogram )::Timeseries, thumbnail = scale( image::image2d, 64, 64) :: jpeg where id = ; -Query Images for display

Select * from images where id = ;

SQL GPU Execution Model

Image Processing Goals


Secure Multi-User Shared Managed Scalable Integrated Fast

Image Processing Operations

Geometric Operations

Scale, Rotate, Transform

Point Operations

Contrast, Brightness, ..

Filters

Linear, Non-Linear

Histograms Edge & Contours

Edge Detection, Curve Detection

Region Processing Color/Spectra Processing FFT/DCT

System Architecture Overview

File Formats

Complex Multi-Layered Metadata Opaque

OpenCL GPU Image Support

Pixels

1D, 2D, 3D Geometries

Channels

Set of sample values (1,2,3,4 per Pixel) Data Types

Byte, Int16, Int32, Float, Half Float, Short_555,

Channel Order

RGBA, ARGB, Intensity, Luminance,

80+ Combinations

Queryable from the Device Driver

Impedance Mismatch

Impedance Mismatch

GPU Raw Format Files Compressed (mostly) JPEG 24 bit (3x8) RGB vs 32 bit (4 x 8) Vector

Conversion Required

Extract Relevant Sections Decompress/Compress

DCT, LZW, Huffman, .

Color Model Transformation

RGB, CMYK, YUV,

Align to GPU Memory Formats

Vectorization

Image Processing Memory Optimization Techniques

Convert 24 bit RGB Pixel to UChar 4 Vectors

Image Striding

Alignment of Pixels Rows to GPU Memory Banks

Z- Ordering

Spatial location of Pixels Alignment of Pixels to GPU Memory Banks

Vectorization
Host Converts 24 Bit JPEG RGB to 32 Bit Unsigned Char_4 Vector Wastes 25% RAM for ~3X Speed-Up

Filtering
3x3, 5x5, Pixels processed per Output Pixel

GPU Memory Access Patterns


Un-Coalesced (misaligned)

Bank Conflict (same Bank) Coalesced

Image Striding

Stride Length is an Exact Multiple of 16 Words

Padding Words

Pixel Access Patterns


Linear Access Poor Access Pattern Bank Conflicts Misalignment Z-Order Access Good Access Pattern No Bank Conflicts Coalesced Access

Morton Z Ordering
Access Order (0,0) (1,0) (1,1) (1,1) (2,0) (3,0) (2,1) (3,1) .

Optimizing Memory Access on GPU Using Morton Order Indexing A.E. Nocentio, P.J. Rhodes, ACM SE 10

Integer Dilation
Z Order Coordinates Dilation & Shifting

Dilation Shifting Look-Up Magic Arithmetic

Integer Dilation and Contraction for Quadtrees and Octrees, L Stocco, G Schrack, IEEE 1995

Conclusions

GPU Accelerated Databases

Bridges Impedance Mismatch

Persistence of Image File Format GPU Memory Access patterns Minimal Data Movement

Supports Image Processing Capabilities

CUDA and OpenCL Kernel functions Support Multiple Image Formats Content Based Queries

GPUs Offload Image Processing Computations

Future Directions

More Image Types


TIFF (GEOTIFF ) DICOM

Computer Vision Functions ( OpenCV )


Face Detection Face Recognition Query by Content

GPU Side Compress/Decompress Feature Extraction

JPEG

DCT, Quantization, Huffman

TIFF

LZW, RLE, JPEG

You might also like