CS Talk - Holger Pirk
Title: Voodoo - A Vector Algebra for Portable Database Performance on Modern Hardware
Host: Daniel Abadi
Abstract: In-memory databases require careful tuning and many engineering tricks to achieve good performance. This kind of database performance engineering is hard: a plethora of both data and hardware-dependent optimization techniques create a design space that is hard for a skilled database engineer – much less a query compiler – to navigate. To facilitate performance-oriented design exploration and query plan compilation, we present Voodoo, a declarative intermediate algebra that abstracts the detailed architectural properties of the hardware, such as multi- or many-core architectures, hierarchical caches and SIMD registers, without losing the ability generate highly tuned code. Because it consists of a collection of declarative, vector-oriented operations, Voodoo is easier to reason about and tune than low-level C and related hardware-focused extensions (i.e., Vector Intrinsics, OpenCL, CUDA, etc.). This enables our Voodoo compiler (which actually generates OpenCL) to produce code that rivals and even outperforms the fastest state-of-the-art in memory databases for both GPUs and CPUs. In addition, Voodoo makes it possible to express techniques as diverse as cache-conscious processing, predication and SIMD (again on both GPUs and CPUs) to be expressed with just a few lines of code. Central to our approach is a novel idea we call control vectors, which allow programmers to expose parallelism to the Voodoo compiler in a highly abstracted manner that is largely agnostic to the targeted hardware, enabling portable performance across different hardware platforms.
We used Voodoo to build an alternative backend for MonetDB, a popular open-source in-memory database. Our backend allows MonetDB to perform at the same level as highly tuned in-memory databases, including HyPeR and Ocelot. We also demonstrate Voodoo’s usefulness when investigating hardware conscious tuning techniques, assessing their performance on different queries, devices and data.