Hardware-conscious database systems evaluate queries in milliseconds
that take minutes in conventional systems, turning long-running jobs
into interactive queries. However, the plethora of hardware-focused
tuning techniques creates a design-space that is hard to navigate for
a skilled performance engineer and even harder to exploit for modern,
code-generating data processing systems. In addition,
hardware-conscious tuning is often at odds with other design goals
such as implementation effort, ease of use and maintainability -- in
particular when developing code-generating database systems.
Well-designed programming abstractions are essential to allow the
creation of systems that are fast, easy to use and maintainable.
In my talk, I demonstrate how existing frameworks for
high-performance, data-parallel programming fall short of this goal. I
argue that the poor performance of many mainstream data processing
systems is due to the lack of an appropriate intermediate abstraction
layer, i.e., one that is amenable to both, traditional data-oriented
as well as low-level hardware-focused optimizations.
To address this problem, I introduce Voodoo, a data parallel
intermediate language that is abstract enough to allow effective code
generation and optimization but low-level enough to express many
common optimizations such as parallelization, loop tiling or memory
locality optimizations. I demonstrate how we used Voodoo to build a
relational data processing system that outperforms the fastest
state-of-the-art in-memory database systems by up to five times. I
also demonstrate how Voodoo can be used as a performance engineering
framework, allowing the expression of many known optimizations and
even enabling the discovery of entirely new optimizations.
Holger Pirk is a Postdoc at the Database group at MIT CSAIL. He
received his PhD from the University of Amsterdam in 2015, where he
worked in the Database Architectures group at CWI. His research
interests lie in the optimization of data processing systems for
modern hardware. In particular, he studies the efficient use of CPU
features such as speculative execution, SIMD or transactional memory
as well as emerging technologies such as GPGPUs and flash memory for
analytical data processing. In addition to new algorithms and
optimizations, Holger develops abstractions that allow the effective
use of these low-level techniques in data processing systems.