Like Water and Oil: With a Proper Emulsifier, Query Compilation and Data Parallelism Will Mix Well
Article
Title
Like Water and Oil: With a Proper Emulsifier, Query Compilation and Data Parallelism Will Mix Well
Authors
Henning Funke and Jens Teubner
Published
Demonstration Paper at VLDB 2020
Download
Presentation Video
Abstract
In response to physical limitations, hardware has changed significantly during the past two decades. As the database community, we have no chance but adapt to those changes in order to benefit from these and further hardware advances.
Two strategies to deal with the change have proven particularly successful. To avoid hitting the memory wall, modern engines compile queries into native machine code; this way, data can be kept longer in registers and performance-limiting memory I/Os can be avoided. To escape the power wall, the use of heterogeneous and massively parallel architectures has been proposed; graphics processors (GPUs) in particular can deliver spectacular compute performance at a very attractive power footprint. But while both these strategies are very successful and well understood, it is surprisingly difficult to bring both together without losing much of their benefit.
In this demo, we showcase DogQC, the query compiler that we develop at TU Dortmund University. DogQC includes the Lane Refill and Push-Down Parallelism techniques to combat divergence effects that are the root cause for the above mentioned difficulty. The two techniques very effectively avoid resource under-utilization on graphics processors, while leveraging the bandwidth efficiency of compiled code. In practice, DogQC's anti-divergence measures can improve query performance by several factors.
Project
Energy Awareness in Database Algorithms and Systems (SFB 876, A2)
Source Code Publication
The source code of the DogQC query compiler is available for download here.
It is also available on Github.
Publication Log
March 2020
Submission to VLDB 2020 (result: Accept)
- submission (PDF)
- reviews (results: Accept, Weak Reject, Weak Accept)