arXivDaily arXiv每日学术速递 周一至周五更新
北美退伍军人节(Veterans Day),12 日无更新
arXiv 2302.10098cs.PL
收藏

动态队列中列数组的控制流复制

Control Flow Duplication for Columnar Arrays in a Dynamic Compiler

Sebastian Kloibhofer, Lukas Makor, David Leopoldseder, Daniele Bonetta, Lukas Stadler, Hanspeter Mössenböck

摘要:

列式数据库是一种加快联机分析处理(OLAP)查询的成熟方法。如今,数据处理(例如,存储、可视化和分析)通常在程序设计语言级执行,因此还希望采用用于公共语言运行时的列式数据结构。虽然有框架、库和API可以支持程序设计语言中的列式数据存储,但将它们集成到应用程序中通常需要开发人员的干预。在之前的工作中,研究人员在GraalVM JavaScript运行时中实现了一种将数组自动转换为列数组的方法。然而,这种方法在较小的工作负载以及更复杂的嵌套数据结构上存在性能问题。我们发现,优化对列数组的访问的关键是识别查询并对其应用特定的优化。在本文中,我们描述了新的编译器优化的GraalVM优化列数组上的查询。在JIT编译时,我们识别访问潜在列数组的循环,并复制它们,以便专门优化对列数组的访问。此外,我们描述了一种新的方法,通过执行 ** 多级存储转换 **,从由复杂对象组成的数组中创建列数组。我们通过JavaScript `Date`对象的实现来演示我们的方法。[完整摘要见https://doi.org/10.22152/programming-journal.org/2023/7/9]

英文摘要:

Columnar databases are an established way to speed up online analytical processing (OLAP) queries. Nowadays, data processing (e.g., storage, visualization, and analytics) is often performed at the programming language level, hence it is desirable to also adopt columnar data structures for common language runtimes. While there are frameworks, libraries, and APIs to enable columnar data stores in programming languages, their integration into applications typically requires developer interference. In prior work, researchers implemented an approach for *automated* transformation of arrays into columnar arrays in the GraalVM JavaScript runtime. However, this approach suffers from performance issues on smaller workloads as well as on more complex nested data structures. We find that the key to optimizing accesses to columnar arrays is to identify queries and apply specific optimizations to them. In this paper, we describe novel compiler optimizations in the GraalVM Compiler that optimize queries on columnar arrays. At JIT compile time, we identify loops that access potentially columnar arrays and duplicate them in order to specifically optimize accesses to columnar arrays. Additionally, we describe a new approach for creating columnar arrays from arrays consisting of complex objects by performing **multi-level storage transformation**. We demonstrate our approach via an implementation for JavaScript `Date` objects. [ full abstract at https://doi.org/10.22152/programming-journal.org/2023/7/9 ]

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑