[论文解读] Generating Custom Code for Efficient Query Execution on Heterogeneous Processors
本文提出 Hawk,一种硬件自适应查询编译器,通过探索并行化策略、数据结构特化和代码转换,自动为异构处理器(如 CPU、GPU 和英特尔至强融核(MIC))生成定制代码变体。它采用基于学习的策略,为每种处理器选择最快变体,与通用代码相比,性能最高提升两个数量级。
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.
研究动机与目标
- 为应对现代数据库中日益严峻的处理器异构性挑战,该挑战使得手动调优成本高且易出错。
- 通过实现自动、硬件感知的代码生成,消除对每种处理器进行手动代码优化的需求。
- 探索并评估每种处理器的多种代码变体,以识别性能最高的配置。
- 将学习到的最优配置集成到启发式查询优化器中,实现实时部署。
- 证明不同代码变体之间的性能差异可高达两个数量级,凸显定制代码对实现峰值性能的必要性。
提出的方法
- 提出流水线程序作为新的物理查询计划抽象,以系统化方式捕获操作及其实现特性,支持代码生成。
- 通过修改并行化策略、数据结构布局并应用编译器转换,系统化生成代码变体。
- 将查询算子编译为 OpenCL 内核,以在任意支持 OpenCL 的处理器上执行,且编译开销极低。
- 采用学习策略,基于运行时性能测量对每种目标处理器进行性能分析,并选择最快代码变体。
- 将学习到的最优配置集成到启发式查询优化器中,以在运行时指导查询执行决策。
- 采用生产者/消费者模型进行代码生成,通过在寄存器中处理元组实现紧密循环融合和更好的数据局部性。
实验结果
研究问题
- RQ1数据库查询编译器如何在无需手动调优的情况下,自动为多种异构处理器生成高性能代码?
- RQ2在 CPU、GPU 和 MIC 上,代码变体的哪些维度(如并行化策略、数据布局和转换)对性能影响最大?
- RQ3不同处理器类型之间,代码变体的性能差异有多大?这些差异能否被系统性地利用?
- RQ4基于学习的方法能否在最小化性能分析开销的前提下,有效识别特定处理器的最优代码变体?
- RQ5如何将硬件自适应代码生成集成到查询优化器中,以实现实时动态选择最快执行路径?
主要发现
- 同一查询和处理器下,不同代码变体之间的性能差异可高达两个数量级,证明了针对处理器进行代码特化至关重要。
- 所提出的方法通过自动化变体探索,成功为多核 CPU、GPU 和英特尔至强融核(MIC)加速器生成高性能代码。
- 基于学习的最优代码变体选择策略在无需事先了解硬件信息或手动调优的情况下,实现了显著的性能提升。
- 流水线程序抽象支持灵活、可维护且模块化的代码生成,同时保留了关键的性能优化。
- 将学习到的配置集成到启发式查询优化器中,可实现实时选择最快执行变体,提升整体系统效率。
- 与使用统一代码的硬件无关系统(如 Ocelot)相比,该方法通过生成处理器特定的高性能内核,展现出更优性能。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。