Demo Data from EDBT 2026 / reviewers in the wild / expert
Laith Sakka
dblp:169/7710
· DBLP profile ↗
10ranked-venue papers
3as first author
4since 2021 · last 2024
0009-0009-5796-4066ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 2 first-author · 1 since 2021Systems, architecture and hardware · 2 · 1 since 2021Databases, data management, data science and information retrieval · 2 · 1 first-author · 2 since 2021
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
6 papers |
Compilers and program optimization · 77% Programming languages and type systems · 23% | |
| Databases, data mining, and information retrieval
2 papers |
Query processing and optimization · 92% Data mining · 8% | |
| Computer architecture, parallel and distributed computing, and storage systems
3 papers |
Parallel and multicore computing · 79% Distributed systems · 12% Memory systems · 9% |
Topics — the 18 heaviest of 20, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Query processing and optimization › query execution › query operator implementation
vectorized query execution |
1.3 | 2 | 2024 | Simple (yet Efficient) Function Authoring for Vectorized Engines · Proc. VLDB Endow. 2024 Velox: Meta's Unified Execution Engine · Proc. VLDB Endow. 2022 |
Compilers and program optimization › loop transformation
loop fusion |
1.0 | 2 | 2024 | Orchard: Heterogeneous Parallelism and Fine-grained Fusion for Complex Tree Traversals · ACM Trans. Archit. Code Optim. 2024 TreeFuser: a framework for analyzing and fusing general recursive tree traversals · Proc. ACM Program. Lang. 2017 |
Compilers and program optimization
code generation |
0.8 | 1 | 2024 | Simple (yet Efficient) Function Authoring for Vectorized Engines · Proc. VLDB Endow. 2024 |
Parallel and multicore computing › parallel programming models and runtimes
parallel programming frameworks |
0.8 | 1 | 2024 | Orchard: Heterogeneous Parallelism and Fine-grained Fusion for Complex Tree Traversals · ACM Trans. Archit. Code Optim. 2024 |
Compilers and program optimization › loop transformation
traversal fusion |
0.7 | 2 | 2019 | Sound, fine-grained traversal fusion for heterogeneous trees · PLDI 2019 TreeFuser: a framework for analyzing and fusing general recursive tree traversals · Proc. ACM Program. Lang. 2017 |
Query processing and optimization
adaptive query processing |
0.6 | 1 | 2022 | Velox: Meta's Unified Execution Engine · Proc. VLDB Endow. 2022 |
Compilers and program optimization
program transformation |
0.4 | 1 | 2019 | Sound, fine-grained traversal fusion for heterogeneous trees · PLDI 2019 |
Programming languages and type systems › type systems
region calculus |
0.4 | 1 | 2019 | LoCal: a language for programs operating on serialized data · PLDI 2019 |
Programming languages and type systems
serialization |
0.4 | 1 | 2019 | LoCal: a language for programs operating on serialized data · PLDI 2019 |
Programming languages and type systems
type systems |
0.4 | 1 | 2019 | LoCal: a language for programs operating on serialized data · PLDI 2019 |
Compilers and program optimization › memory optimization
data locality optimization |
0.3 | 1 | 2017 | Locality Transformations for Nested Recursive Iteration Spaces · ASPLOS 2017 |
Compilers and program optimization
dependence analysis |
0.3 | 1 | 2017 | TreeFuser: a framework for analyzing and fusing general recursive tree traversals · Proc. ACM Program. Lang. 2017 |
Compilers and program optimization
loop transformation |
0.3 | 1 | 2017 | Locality Transformations for Nested Recursive Iteration Spaces · ASPLOS 2017 |
Data mining
feature engineering |
0.2 | 1 | 2022 | Velox: Meta's Unified Execution Engine · Proc. VLDB Endow. 2022 |
Programming languages and type systems
domain-specific languages |
0.1 | 1 | 2019 | Sound, fine-grained traversal fusion for heterogeneous trees · PLDI 2019 |
Distributed systems › concurrency control
serialization |
0.1 | 1 | 2019 | LoCal: a language for programs operating on serialized data · PLDI 2019 |
Compilers and program optimization › compiler construction
compiler passes |
0.1 | 1 | 2017 | TreeFuser: a framework for analyzing and fusing general recursive tree traversals · Proc. ACM Program. Lang. 2017 |
Memory systems
memory hierarchy |
0.1 | 1 | 2017 | Locality Transformations for Nested Recursive Iteration Spaces · ASPLOS 2017 |
Methods — techniques the papers use, named apart from their topics
simple function interface · 1.5row-based interface · 1.5heterogeneous parallelism · 1.5embedded domain-specific language · 1.5type safety proof · 0.8type inference · 0.8scheduling transformations · 0.6traversal fusion · 0.4soundness analysis · 0.4code motion · 0.3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Simple (yet Efficient) Function Authoring for Vectorized EnginesabstractVectorized execution engines process large datasets by decomposing computations into concise (tight) loops, which can be more efficiently executed by modern hardware. Providing loops that are optimal for execution usually adds burden to the software development process, as developers are required to understand details of vectorized execution, columnar data layout, data encodings, and the code compilation process itself, presenting a steep learning curve and challenges to organizations building and scaling large engineering teams. Due to their large quantity, scalar function authoring accentuates this problem. In our experience building the Velox open source execution engine, we have observed that exposing a large number of developers to the complexity inherent to vectorization resulted in a disproportionate amount of bugs and performance inefficiencies. In this paper, we describe the simple function interface (SFI) created to address this issue. SFI highly simplifies scalar function authoring by encapsulating the vectorization complexity required to generate tight loops, and presenting developers with a simpler, conciser, and more natural row-based interface - without sacrificing performance. SFI also hides columnar layout details, while providing developers the flexibility to efficiently implement advanced features such as functions with nested and recursive parameter types, type variables, variadic parameters, and generic types. Today, more than a thousand functions have been added to Velox using the SFI, implementing popular open source SQL dialects and internal domain-specific use cases at Meta, and are in active production use. While this paper presents implementation details, performance pitfalls, experimental results, and our overall experience developing the state-of-the-art Velox vectorized execution engine, we believe the concepts and trade-offs to be fundamentally equivalent and generally applicable to other vectorized engines. Laith Sakka, Pedro Pedreira, Orri Erling, Masha Basmanova, Kevin Wilfong, Xiaoxuan Meng, Krishna Pai, Bikramjeet Vig |
Proc. VLDB Endow. | 1 |
| 2024 | Orchard: Heterogeneous Parallelism and Fine-grained Fusion for Complex Tree TraversalsabstractMany applications are designed to perform traversals on tree-like data structures. Fusing and parallelizing these traversals enhance the performance of applications. Fusing multiple traversals improves the locality of the application. The runtime of an application can be significantly reduced by extracting parallelism and utilizing multi-threading. Prior frameworks have tried to fuse and parallelize tree traversals using coarse-grained approaches, leading to missed fine-grained opportunities for improving performance. Other frameworks have successfully supported fine-grained fusion on heterogeneous tree types but fall short regarding parallelization. We introduce a new framework Orchard built on top of Grafter . Orchard ’s novelty lies in allowing the programmer to transform tree traversal applications by automatically applying fine-grained fusion and extracting heterogeneous parallelism. Orchard allows the programmer to write general tree traversal applications in a simple and elegant embedded Domain-Specific Language (eDSL). We show that the combination of fine-grained fusion and heterogeneous parallelism performs better than each alone when the conditions are met. Vidush Singhal, Laith Sakka, Kirshanthan Sundararajah, Ryan Newton, Milind Kulkarni 0001 |
ACM Trans. Archit. Code Optim. | 2 |
| 2022 | Velox: Meta's Unified Execution EngineabstractThe ad-hoc development of new specialized computation engines targeted to very specific data workloads has created a siloed data landscape. Commonly, these engines share little to nothing with each other and are hard to maintain, evolve, and optimize, and ultimately provide an inconsistent experience to data users. In order to address these issues, Meta has created Velox, a novel open source C++ database acceleration library. Velox provides reusable, extensible, high-performance, and dialect-agnostic data processing components for building execution engines, and enhancing data management systems. The library heavily relies on vectorization and adaptivity, and is designed from the ground up to support efficient computation over complex data types due to their ubiquity in modern workloads. Velox is currently integrated or being integrated with more than a dozen data systems at Meta, including analytical query engines such as Presto and Spark, stream processing platforms, message buses and data warehouse ingestion infrastructure, machine learning systems for feature engineering and data preprocessing (PyTorch), and more. It provides benefits in terms of (a) efficiency wins by democratizing optimizations previously only found in individual engines, (b) increased consistency for data users, and (c) engineering efficiency by promoting reusability. Pedro Pedreira, Orri Erling, Maria Basmanova, Kevin Wilfong, Laith Sakka, Krishna Pai, Biswapesh Chattopadhyay |
Proc. VLDB Endow. | 5 |
| 2021 | Lightning BOLT: powerful, fast, and scalable binary optimizationabstractProfile-guided binary optimization has proved to be an important technology to achieve peak performance, particularly for large-scale binaries that are typical for data-center applications. By applying the profile data at the same representation where sampling-based profiling is collected, binary optimizers can provide double-digit speedups over binaries compiled with profile-guided optimizations using similarly collected profile data. The main blocker for adoption of binary optimizers in practice is the overhead that they add to the already long and demanding build pipelines used for producing highly optimized binaries, which already include aggressive compiler optimizations guided by profile data and also link-time optimizations. This paper addresses the overheads of binary optimizers in the context of BOLT, a modern and powerful open-source binary optimizer. More specifically, this paper describes Lightning BOLT, which is an improved version of the BOLT binary optimizer that drastically reduces BOLT’s processing time and memory requirements, while preserving BOLT’s effectiveness in improving the final binary’s performance. Using a set of real-world data-center and open-source applications, we show that Lightning BOLT speeds up BOLT’s processing by an average of 4.71× and reduces BOLT’s memory consumption by 70.5% on average. Furthermore, Lightning BOLT also provides an adjustable mechanism to further reduce BOLT’s overheads at the cost of some lost performance for the final binary. Maksim Panchenko, Rafael Auler, Laith Sakka, Guilherme Ottoni |
CC | 3 |
| 2019 | Sound, fine-grained traversal fusion for heterogeneous treesabstractApplications in many domains are based on a series of traversals of tree structures, and fusing these traversals together to reduce the total number of passes over the tree is a common, important optimization technique. In applications such as compilers and render trees, these trees are heterogeneous: different nodes of the tree have different types. Unfortunately, prior work for fusing traversals falls short in different ways: they do not handle heterogeneity; they require using domain-specific languages to express an application; they rely on the programmer to aver that fusing traversals is safe, without any soundness guarantee; or they can only perform coarse-grain fusion, leading to missed fusion opportunities. This paper addresses these shortcomings to build a framework for fusing traversals of heterogeneous trees that is automatic, sound, and fine-grained. We show across several case studies that our approach is able to allow programmers to write simple, intuitive traversals, and then automatically fuse them to substantially improve performance. Laith Sakka, Kirshanthan Sundararajah, Ryan Newton, Milind Kulkarni 0001 |
PLDI | 1 |
| 2019 | LoCal: a language for programs operating on serialized dataabstractIn a typical data-processing program, the representation of data in memory is distinct from its representation in a serialized form on disk. The former has pointers and arbitrary, sparse layout, facilitating easy manipulation by a program, while the latter is packed contiguously, facilitating easy I/O. We propose a language, LoCal, to unify in-memory and serialized formats. LoCal extends a region calculus into a location calculus, employing a type system that tracks the byte-addressed layout of all heap values. We formalize LoCal and prove type safety, and show how LoCal programs can be inferred from unannotated source terms. Michael Vollmer 0003, Chaitanya Koparkar, Mike Rainey, Laith Sakka, Milind Kulkarni 0001, Ryan Newton |
PLDI | 4 |
| 2017 | Locality Transformations for Nested Recursive Iteration SpacesabstractThere has been a significant amount of effort invested in designing scheduling transformations such as loop tiling and loop fusion that rearrange the execution of dynamic instances of loop nests to place operations that access the same data close together temporally. In recent years, there has been interest in designing similar transformations that operate on recursive programs, but until now these transformations have only considered simple scenarios: multiple recursions to be fused, or a recursion nested inside a simple loop. This paper develops the first set of scheduling transformations for nested recursions: recursive methods that call other recursive methods. These are the recursive analog to nested loops. We present a transformation called recursion twisting that automatically improves locality at all levels of the memory hierarchy, and show that this transformation can yield substantial performance improvements across several benchmarks that exhibit nested recursion. Kirshanthan Sundararajah, Laith Sakka, Milind Kulkarni 0001 |
ASPLOS | 2 |
| 2017 | Compiling Tree Transforms to Operate on Packed RepresentationsabstractWhen written idiomatically in most programming languages, programs that traverse and construct trees operate over pointer-based data structures, using one heap object per-leaf and per-node. This representation is efficient for random access and shape-changing modifications, but for traversals, such as compiler passes, that process most or all of a tree in bulk, it can be inefficient. In this work we instead compile tree traversals to operate on pointer-free pre-order serializations of trees. On modern architectures such programs often run significantly faster than their pointer-based counterparts, and additionally are directly suited to storage and transmission without requiring marshaling. We present a prototype compiler, Gibbon, that compiles a small first-order, purely functional language sufficient for tree traversals. The compiler transforms this language into intermediate representation with explicit pointers into input and output buffers for packed data. The key compiler technologies include an effect system for capturing traversal behavior, combined with an algorithm to insert destination cursors. We evaluate our compiler on tree transformations over a real-world dataset of source-code syntax trees. For traversals touching the whole tree, such as maps and folds, packed data allows speedups of over 2x compared to a highly-optimized pointer-based baseline. Michael Vollmer 0003, Sarah Spall, Buddhika Chamith, Laith Sakka, Chaitanya Koparkar, Milind Kulkarni 0001, Sam Tobin-Hochstadt, Ryan Newton |
ECOOP | 4 |
| 2017 | TreeFuser: a framework for analyzing and fusing general recursive tree traversalsabstractSeries of traversals of tree structures arise in numerous contexts: abstract syntax tree traversals in compiler passes, rendering traversals of the DOM in web browsers, kd-tree traversals in computational simulation codes. In each of these settings, a tree is traversed multiple times to compute various values and modify various portions of the tree. While it is relatively easy to write these traversals as separate small updates to the tree, for efficiency reasons, traversals are often manually fused to reduce the number of times that each portion of the tree is traversed: by performing multiple operations on the tree simultaneously, each node of the tree can be visited fewer times, increasing opportunities for optimization and decreasing cache pressure and other overheads. This fusion process is often done manually, requiring careful understanding of how each of traversals of the tree interact. This paper presents an automatic approach to traversal fusion: tree traversals can be written independently, and then our framework analyzes the dependences between the traversals to determine how they can be fused to reduce the number of visits to each node in the tree. A critical aspect of our framework is that it exploits two opportunities to increase the amount of fusion: i) it automatically integrates code motion, and ii) it supports partial fusion, where portions of one traversal can be fused with another, allowing for a reduction in node visits without requiring that two traversals be fully fused. We implement our framework in Clang, and show across several case studies that we can successfully fuse complex tree traversals, reducing the overall number of traversals and substantially improving locality and performance. Laith Sakka, Kirshanthan Sundararajah, Milind Kulkarni 0001 |
Proc. ACM Program. Lang. | 1 |
| 2015 | Experimental evaluation of various register-pressure-reduction heuristicsabstractSummary Minimizing the amount of spill code is still an open problem in code generation and optimization. The amount of spill code depends on both the register allocation algorithm and the pre‐allocation instruction scheduling algorithm that controls the register pressure. In this paper, we focus on the impact of pre‐allocation instruction scheduling on the amount of spill code. Many heuristic techniques have been proposed to do instruction scheduling with the objective of minimizing register pressure and consequently the amount of spill code. However, the performance of these heuristic techniques has not been studied relative to optimality on real large‐scale programs. In this paper, we present an experimental study that evaluates the performance of several pre‐allocation scheduling heuristics. The evaluation involves computing an experimental lower bound on the size of gap between each heuristic's performance and optimal performance. We also propose a simple heuristic technique based on a specific permutation of two basic priority schemes and experimentally evaluate the performance of this technique compared with other heuristics, including the heuristics implemented in the LLVM open‐source Compiler. The evaluation is carried out by running SPEC CPU2006 on real x86‐64 hardware and measuring both the amount of spill code and the execution time. The results of our study show that the proposed heuristic technique gives better overall performance than LLVM's best heuristic on x86‐64, although it produces slightly more spilling. The proposed heuristic has better overall performance, because it achieves a better balance between register pressure and instruction‐level parallelism (ILP). This result shows the importance of ILP in pre‐allocation scheduling even on out‐of‐order machines. Furthermore, the results of the study show that there is a large gap between the performance of any of the studied heuristics and optimal performance; even the best heuristic in the study produces significantly more spill code than the optimal amount. This experimental result quantifies the intuitive belief that it is unlikely to find a heuristic that works well in all cases, thus showing the need for more rigorous solutions using combinatorial approaches. The paper discusses the challenges and complexities that are involved in developing such rigorous solutions. Copyright © 2014 John Wiley & Sons, Ltd. Ghassan Shobaki, Laith Sakka, Najm Eldeen Abu Rmaileh, Hasan Al-Hamash |
Softw. Pract. Exp. | 2 |