Generating Custom Code for Efficient Query Execution on Heterogeneous Processors
Sebastian Bre{\ss}, Bastian K\"ocher, Henning Funke, Tilmann, Rabl, Volker Markl

TL;DR
This paper introduces an automated approach for generating processor-specific code variants to optimize query execution performance across heterogeneous processors like CPUs, GPUs, and MICs, reducing manual tuning efforts.
Contribution
It proposes a method to automatically create and select optimized code variants for different processors, improving performance without manual intervention.
Findings
Variants can differ in performance by up to two orders of magnitude.
The approach successfully identifies fast code variants for CPUs, GPUs, and MICs.
Automated code generation enhances query execution efficiency on diverse hardware.
Abstract
Processor manufacturers build increasingly specialized processors to mitigate the effects of the power wall to deliver improved performance. Currently, database engines are manually optimized for each processor: A costly and error prone process. In this paper, we propose concepts to enable the database engine to perform per-processor optimization automatically. Our core idea is to create variants of generated code and to learn a fast variant for each processor. We create variants by modifying parallelization strategies, specializing data structures, and applying different code transformations. Our experimental results show that the performance of variants may diverge up to two orders of magnitude. Therefore, we need to generate custom code for each processor to achieve peak performance. We show that our approach finds a fast custom variant for multi-core CPUs, GPUs, and MICs.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed systems and fault tolerance · Software Testing and Debugging Techniques
