Grégory M. Essertel

dblp:187/9576 · DBLP profile ↗
← Back
9ranked-venue papers
4as first author
1since 2021 · last 2021
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 6 · 3 first-author · 1 since 2021Databases, data management, data science and information retrieval · 2 · 1 first-authorArtificial intelligence and machine learning · 1

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
3 papers
Program analysis · 46% Programming languages and type systems · 28% Compilers and program optimization · 26%
Databases, data mining, and information retrieval
2 papers
Query processing and optimization · 73% Machine learning and data management · 27%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
High-performance computing · 77% Cloud and datacenter computing · 23%

Topics — the 14 heaviest of 18, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Query processing and optimization
query compilation
0.722019
Flare & Lantern: Efficiently Swapping Horses Midstream · Proc. VLDB Endow. 2019
How to Architect a Query Compiler, Revisited · SIGMOD Conference 2018
Machine learning and data management
data management for machine learning
0.412019
Flare & Lantern: Efficiently Swapping Horses Midstream · Proc. VLDB Endow. 2019
Program analysis › static analysis
abstract interpretation
0.412019
Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019
Program analysis
heap analysis
0.412019
Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019
Program analysis
loop analysis
0.412019
Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019
Program analysis
static analysis
0.412019
Precise reasoning with structured time, structured heaps, and collective operations · Proc. ACM Program. Lang. 2019
Query processing and optimization › query compilation
code generation for query execution
0.312018
How to Architect a Query Compiler, Revisited · SIGMOD Conference 2018
Compilers and program optimization
automatic differentiation
0.312018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018
Programming languages and type systems › programming paradigms
differentiable programming
0.312018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018
Compilers and program optimization › automatic differentiation
reverse-mode automatic differentiation
0.312018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018
High-performance computing
performance optimization
0.312018
Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data · OSDI 2018
Programming languages and type systems › computational effects
effect systems
0.212016
Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect · OOPSLA 2016
Programming languages and type systems
type systems
0.212016
Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect · OOPSLA 2016
Compilers and program optimization › code generation
native code generation
0.112018
Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming · NeurIPS 2018

Methods — techniques the papers use, named apart from their topics

runtime compilation · 0.8native code generation · 0.8σ-notation · 0.4strongest-postcondition semantics · 0.4mapreduce · 0.4multi-stage programming · 0.3continuation-passing style · 0.3callbacks · 0.3
YearPublicationVenuePosition
2021 On-stack replacement for program generators and source-to-source compilers
abstract
On-stack replacement (OSR) describes the ability to replace currently executing code with a different version, either a more optimized one (tiered execution) or a more general one (deoptimization to undo speculative optimization). While OSR is a key component in all modern VMs for languages like Java or JavaScript, OSR has only recently been studied as a more abstract program transformation, independent of language VMs. Still, previous work has only considered OSR in the context of low-level execution models based on stack frames, labels, and jumps.
Grégory M. Essertel, Ruby Y. Tahboub, Tiark Rompf
GPCE1
2019 Compiling with continuations, or without? whatever
abstract
What makes a good compiler IR? In the context of functional languages, there has been an extensive debate on the advantages and disadvantages of continuation-passing-style (CPS). The consensus seems to be that some form of explicit continuations is necessary to model jumps in a functional style, but that they should have a 2nd-class status, separate from regular functions, to ensure efficient code generation. Building on this observation, a recent study from PLDI 2017 proposed a direct-style IR with explicit join points, which essentially represent local continuations, i.e., functions that do not return or escape. While this IR can work well in practice, as evidenced by the implementation of join points in the Glasgow Haskell Compiler (GHC), there still seems to be room for improvement, especially with regard to the way continuations are handled in the course of optimization. In this paper, we contribute to the CPS debate by developing a novel IR with the following features. First, we integrate a control operator that resembles Felleisen’s C , eliminating certain redundant rewrites observed in the previous study. Second, we treat the non-returning and non-escaping aspects of continuations separately, allowing efficient compilation of well-behaved functions defined by the user. Third, we define a selective CPS translation of our IR, which erases control operators while preserving the meaning and typing of programs. These features enable optimizations in both direct style and full CPS, as well as in any intermediate style with selectively exposed continuations. Thus, we change the spectrum of available options from “CPS yes or no” to “as much or as little CPS as you want, when you want it”.
Youyou Cong, Leo Osvald, Grégory M. Essertel, Tiark Rompf
Proc. ACM Program. Lang.3
2019 Precise reasoning with structured time, structured heaps, and collective operations
abstract
Despite decades of progress, static analysis tools still have great difficulty dealing with programs that combine arithmetic, loops, dynamic memory allocation, and linked data structures. In this paper we draw attention to two fundamental reasons for this difficulty: First, typical underlying program abstractions are low-level and inherently scalar, characterizing compound entities like data structures or results computed through iteration only indirectly. Second, to ensure termination, analyses typically project away the dimension of time, and merge information per program point, which incurs a loss in precision. As a remedy, we propose to make collective operations first-class in program analysis – inspired by Σ-notation in mathematics, and also by the success of high-level intermediate languages based on @map/reduce@ operations in program generators and aggressive optimizing compilers for domain-specific languages (DSLs). We further propose a novel structured heap abstraction that preserves a symbolic dimension of time, reflecting the program’s loop structure and thus unambiguously correlating multiple temporal points in the dynamic execution with a single point in the program text. This paper presents a formal model, based on a high-level intermediate analysis language, a practical realization in a prototype tool that analyzes C code, and an experimental evaluation that demonstrates competitive results on a series of benchmarks. Remarkably, our implementation achieves these results in a fully semantics-preserving strongest-postcondition model, which is a worst-case for analysis/verification. The underlying ideas, however, are not tied to this model and would equally apply in other settings, e.g., demand-driven invariant inference in a weakest-precondition model. Given its semantics-preserving nature, our implementation is not limited to analysis for verification, but can also check program equivalence, and translate legacy C code to high-performance DSLs.
Grégory M. Essertel, Guannan Wei 0001, Tiark Rompf
Proc. ACM Program. Lang.1
2019 Demystifying differentiable programming: shift/reset the penultimate backpropagator
abstract
Deep learning has seen tremendous success over the past decade in computer vision, machine translation, and gameplay. This success rests crucially on gradient-descent optimization and the ability to “learn” parameters of a neural network by backpropagating observed errors. However, neural network architectures are growing increasingly sophisticated and diverse, which motivates an emerging quest for even more general forms of differentiable programming, where arbitrary parameterized computations can be trained by gradient descent. In this paper, we take a fresh look at automatic differentiation (AD) techniques, and especially aim to demystify the reverse-mode form of AD that generalizes backpropagation in neural networks. We uncover a tight connection between reverse-mode AD and delimited continuations, which permits implementing reverse-mode AD purely via operator overloading and without managing any auxiliary data structures. We further show how this formulation of AD can be fruitfully combined with multi-stage programming (staging), leading to an efficient implementation that combines the performance benefits of deep learning frameworks based on explicit reified computation graphs (e.g., TensorFlow) with the expressiveness of pure library approaches (e.g., PyTorch).
Fei Wang 0046, Daniel Zheng, James M. Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf
Proc. ACM Program. Lang.5
2019 Flare & Lantern: Efficiently Swapping Horses Midstream
abstract
Running machine learning (ML) workloads at scale is as much a data management problem as a model engineering problem. Big performance challenges exist when data management systems invoke ML classifiers as user-defined functions (UDFs) or when stand-alone ML frameworks interact with data stores for data loading and pre-processing (ETL). In particular, UDFs can be precompiled or simply a black box for the data management system and the data layout may be completely different from the native layout, thus adding overheads at the boundaries. In this demo, we will show how bottlenecks between existing systems can be eliminated when their engines are designed around runtime compilation and native code generation, which is the case for many state-of-the-art relational engines as well as ML frameworks. We demonstrate an integration of Flare (an accelerator for Spark SQL), and Lantern (an accelerator for TensorFlow and PyTorch) that results in a highly optimized end-to-end compiled data path, switching between SQL and ML processing with negligible overhead.
Grégory M. Essertel, Ruby Y. Tahboub, Fei Wang 0046, James M. Decker, Tiark Rompf
Proc. VLDB Endow.1
2018 Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming
abstract
Training of deep learning models depends on gradient descent and end-to-end differentiation. Under the slogan of differentiable programming, there is an increasing demand for efficient automatic gradient computation for emerging network architectures that incorporate dynamic control flow, especially in NLP. In this paper we propose an implementation of backpropagation using functions with callbacks, where the forward pass is executed as a sequence of function calls, and the backward pass as a corresponding sequence of function returns. A key realization is that this technique of chaining callbacks is well known in the programming languages community as continuation-passing style (CPS). Any program can be converted to this form using standard techniques, and hence, any program can be mechanically converted to compute gradients. Our approach achieves the same flexibility as other reverse-mode automatic differentiation (AD) techniques, but it can be implemented without any auxiliary data structures besides the function call stack, and it can easily be combined with graph construction and native code generation techniques through forms of multi-stage programming, leading to a highly efficient implementation that combines the performance benefits of define-then-run software frameworks such as TensorFlow with the expressiveness of define-by-run frameworks such as PyTorch.
Fei Wang 0046, James M. Decker, Xilun Wu, Grégory M. Essertel, Tiark Rompf
NeurIPS4
2018 Flare: Optimizing Apache Spark with Native Compilation for Scale-Up Architectures and Medium-Size Data
Grégory M. Essertel, Ruby Y. Tahboub, James M. Decker, Kevin J. Brown, Kunle Olukotun, Tiark Rompf
OSDI1
2018 How to Architect a Query Compiler, Revisited
abstract
To leverage modern hardware platforms to their fullest, more and more database systems embrace compilation of query plans to native code. In the research community, there is an ongoing debate about the best way to architect such query compilers. This is perceived to be a difficult task, requiring techniques fundamentally different from traditional interpreted query execution.
Ruby Y. Tahboub, Grégory M. Essertel, Tiark Rompf
SIGMOD Conference2
2016 Gentrification gone too far? affordable 2nd-class values for fun and (co-)effect
abstract
First-class functions dramatically increase expressiveness, at the expense of static guarantees. In ALGOL or PASCAL, functions could be passed as arguments but never escape their defining scope. Therefore, function arguments could serve as temporary access tokens or capabilities, enabling callees to perform some action, but only for the duration of the call. In modern languages, such programming patterns are no longer available.
Leo Osvald, Grégory M. Essertel, Xilun Wu, Lilliam I. González Alayón, Tiark Rompf
OOPSLA2