Professional Documents
Culture Documents
Agenda
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
Image Processing
Fastest Route
Relational Operations
In-Database Analytics
Predictive Analytics
Risk Management
3D Content Management
GIS CAD
Ordering
Sorting Group By
Rows
Set of Columns
Vectors
Tables
Images
Set of Rows
Columns Types
Metadata
Standard types
BLOB
SMART-BLOB, BLOBS
Tables
External Files
Functions called by SQL Queries or Triggers Many SQL UDF Language Bindings
OpenCL, CUDA
Timeseries * histogram )
Update Images set histogram = histogram256( imaged::image2d, histogram )::Timeseries, thumbnail = scale( image::image2d, 64, 64) :: jpeg where id = ; -Query Images for display
Geometric Operations
Point Operations
Contrast, Brightness, ..
Filters
Linear, Non-Linear
File Formats
Pixels
Channels
Channel Order
80+ Combinations
Impedance Mismatch
Impedance Mismatch
GPU Raw Format Files Compressed (mostly) JPEG 24 bit (3x8) RGB vs 32 bit (4 x 8) Vector
Conversion Required
Vectorization
Image Striding
Z- Ordering
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
Image Striding
Padding Words
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
Integer Dilation and Contraction for Quadtrees and Octrees, L Stocco, G Schrack, IEEE 1995
Conclusions
Persistence of Image File Format GPU Memory Access patterns Minimal Data Movement
CUDA and OpenCL Kernel functions Support Multiple Image Formats Content Based Queries
Future Directions
JPEG
TIFF