Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Eric Schkufza

dblp:33/3357 · DBLP profile ↗
← Back
11ranked-venue papers
3as 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 · 8 · 3 first-author · 1 since 2021Systems, architecture and hardware · 4 · 2 first-author · 1 since 2021Graphics, computer vision, multimedia, augmented reality and games · 2

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.

Computer architecture, parallel and distributed computing, and storage systems
6 papers
Reconfigurable computing and FPGAs · 44% Cloud and datacenter computing · 18% Processor architecture and microarchitecture · 10%
Software engineering, system software, and programming languages
6 papers
Compilers and program optimization · 39% Programming languages and type systems · 25% Program verification · 19%
Computer graphics and multimedia
2 papers
Visual content generation and editing · 54% Geometric modeling and processing · 46%

Topics — the 21 heaviest of 26, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Reconfigurable computing and FPGAs
FPGA virtualization
0.512021
Compiler-driven FPGA virtualization with SYNERGY · ASPLOS 2021
Program verification
equivalence checking
0.422015
Conditionally correct superoptimization · OOPSLA 2015
Data-driven equivalence checking · OOPSLA 2013
Compilers and program optimization › compiler optimization
superoptimization
0.422015
Conditionally correct superoptimization · OOPSLA 2015
Stochastic superoptimization · ASPLOS 2013
Reconfigurable computing and FPGAs
FPGA compilation
0.412019
Just-In-Time Compilation for Verilog: A New Technique for Improving the FPGA Programming Experience · ASPLOS 2019
Operating systems › resource management
resource sharing
0.312018
Sharing, Protection, and Compatibility for Reconfigurable Fabric with AmorphOS · OSDI 2018
Programming languages and type systems › language semantics
formal semantics
0.212016
Stratified synthesis: automatically learning the x86-64 instruction set · PLDI 2016
Programming languages and type systems › language semantics › formal semantics
instruction set semantics
0.212016
Stratified synthesis: automatically learning the x86-64 instruction set · PLDI 2016
Compilers and program optimization › numerical program optimization
floating-point optimization
0.212014
Stochastic optimization of floating-point programs with tunable precision · PLDI 2014
Compilers and program optimization › approximate computing
precision tuning
0.212014
Stochastic optimization of floating-point programs with tunable precision · PLDI 2014
Hardware accelerators and domain-specific architectures › machine learning accelerator
low-precision arithmetic
0.212014
Stochastic optimization of floating-point programs with tunable precision · PLDI 2014
High-performance computing › performance optimization
numerical program optimization
0.212014
Stochastic optimization of floating-point programs with tunable precision · PLDI 2014
Visual content generation and editing › scene synthesis
furniture arrangement
0.112011
Interactive furniture layout using interior design guidelines · ACM Trans. Graph. 2011
Parallel and multicore computing
parallel programming models
0.112011
Programming the memory hierarchy revisited: supporting irregular parallelism in sequoia · PPoPP 2011
Parallel and multicore computing › parallel programming models
task parallelism
0.112011
Programming the memory hierarchy revisited: supporting irregular parallelism in sequoia · PPoPP 2011
Processor architecture and microarchitecture
debugging support
0.112019
Just-In-Time Compilation for Verilog: A New Technique for Improving the FPGA Programming Experience · ASPLOS 2019
Electronic design automation
hardware verification and test
0.112019
Just-In-Time Compilation for Verilog: A New Technique for Improving the FPGA Programming Experience · ASPLOS 2019
Geometric modeling and processing
procedural modeling
0.112010
Computer-generated residential building layouts · ACM Trans. Graph. 2010
Processor architecture and microarchitecture
instruction set architecture
0.112016
Stratified synthesis: automatically learning the x86-64 instruction set · PLDI 2016
Processor architecture and microarchitecture › instruction set architecture › CISC
x86-64
0.112016
Stratified synthesis: automatically learning the x86-64 instruction set · PLDI 2016
Memory systems
memory hierarchy
0.012011
Programming the memory hierarchy revisited: supporting irregular parallelism in sequoia · PPoPP 2011
Machine learning › Probabilistic and Bayesian machine learning › structured models › graphical models
bayesian network
0.012010
Computer-generated residential building layouts · ACM Trans. Graph. 2010

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

syntax-guided synthesis · 0.5runtime support · 0.5compiler transformation · 0.5stochastic search · 0.4error characterization · 0.4monte carlo sampling · 0.2density function · 0.2testing · 0.2stochastic optimization · 0.2decision procedures · 0.2bayesian network · 0.2abstract interpretation · 0.2simulation relation inference · 0.2markov chain monte carlo · 0.2cost function encoding · 0.2SMT solver · 0.2
YearPublicationVenuePosition
2021 Compiler-driven FPGA virtualization with SYNERGY
abstract
FPGAs are increasingly common in modern applications, and cloud providers now support on-demand FPGA acceleration in data centers. Applications in data centers run on virtual infrastructure, where consolidation, multi-tenancy, and workload migration enable economies of scale that are fundamental to the provider’s business. However, a general strategy for virtualizing FPGAs has yet to emerge. While manufacturers struggle with hardware-based approaches, we propose a compiler/runtime-based solution called Synergy. We show a compiler transformation for Verilog programs that produces code able to yield control to software at sub-clock-tick granularity according to the semantics of the original program. Synergy uses this property to efficiently support core virtualization primitives: suspend and resume, program migration, and spatial/temporal multiplexing, on hardware which is available today. We use Synergy to virtualize FPGA workloads across a cluster of Altera SoCs and Xilinx FPGAs on Amazon F1. The workloads require no modification, run within 3−4× of unvirtualized performance, and incur a modest increase in FPGA fabric utilization.
Joshua Landgraf, Tiffany Yang, Will Lin, Christopher J. Rossbach, Eric Schkufza
ASPLOS5
2019 Just-In-Time Compilation for Verilog: A New Technique for Improving the FPGA Programming Experience
abstract
FPGAs offer compelling acceleration opportunities for modern applications. However compilation for FPGAs is painfully slow, potentially requiring hours or longer. We approach this problem with a solution from the software domain: the use of a JIT. Code is executed immediately in a software simulator, and compilation is performed in the background. When finished, the code is moved into hardware, and from the user's perspective it simply gets faster. We have embodied these ideas in Cascade: the first JIT compiler for Verilog. Cascade reduces the time between initiating compilation and running code to less than a second, and enables generic printf debugging from hardware. Cascade preserves program performance to within 3× in a debugging environment, and has minimal effect on a finalized design. Crucially, these properties hold even for programs that perform side effects on connected IO devices. A user study demonstrates the value to experts and non-experts alike: Cascade encourages more frequent compilation, and reduces the time to produce working hardware designs.
Eric Schkufza, Michael Wei, Christopher J. Rossbach
ASPLOS1
2018 Sharing, Protection, and Compatibility for Reconfigurable Fabric with AmorphOS
Ahmed Khawaja, Joshua Landgraf, Rohith Prakash, Michael Wei, Eric Schkufza, Christopher J. Rossbach
OSDI5
2016 Stratified synthesis: automatically learning the x86-64 instruction set
abstract
The x86-64 ISA sits at the bottom of the software stack of most desktop and server software. Because of its importance, many software analysis and verification tools depend, either explicitly or implicitly, on correct modeling of the semantics of x86-64 instructions. However, formal semantics for the x86-64 ISA are difficult to obtain and often written manually through great effort. We describe an automatically synthesized formal semantics of the input/output behavior for a large fraction of the x86-64 Haswell ISA’s many thousands of instruction variants. The key to our results is stratified synthesis, where we use a set of instructions whose semantics are known to synthesize the semantics of additional instructions whose semantics are unknown. As the set of formally described instructions increases, the synthesis vocabulary expands, making it possible to synthesize the semantics of increasingly complex instructions. Using this technique we automatically synthesized formal semantics for 1,795 instruction variants of the x86-64 Haswell ISA. We evaluate the learned semantics against manually written semantics (where available) and find that they are formally equivalent with the exception of 50 instructions, where the manually written semantics contain an error. We further find the learned formulas to be largely as precise as manually written ones and of similar size.
Stefan Heule, Eric Schkufza, Rahul Sharma 0001, Alex Aiken
PLDI2
2015 Conditionally correct superoptimization
abstract
The aggressive optimization of heavily used kernels is an important problem in high-performance computing. However, both general purpose compilers and highly specialized tools such as superoptimizers often do not have sufficient static knowledge of restrictions on program inputs that could be exploited to produce the very best code. For many applications, the best possible code is conditionally correct: the optimized kernel is equal to the code that it replaces only under certain preconditions on the kernel's inputs. The main technical challenge in producing conditionally correct optimizations is in obtaining non-trivial and useful conditions and proving conditional equivalence formally in the presence of loops. We combine abstract interpretation, decision procedures, and testing to yield a verification strategy that can address both of these problems. This approach yields a superoptimizer for x86 that in our experiments produces binaries that are often multiple times faster than those produced by production compilers.
Rahul Sharma 0001, Eric Schkufza, Berkeley R. Churchill, Alex Aiken
OOPSLA2
2014 Stochastic optimization of floating-point programs with tunable precision
abstract
The aggressive optimization of floating-point computations is an important problem in high-performance computing. Unfortunately, floating-point instruction sets have complicated semantics that often force compilers to preserve programs as written. We present a method that treats floating-point optimization as a stochastic search problem. We demonstrate the ability to generate reduced precision implementations of Intel's handwritten C numeric library which are up to 6 times faster than the original code, and achieve end-to-end speedups of over 30% on a direct numeric simulation and a ray tracer by optimizing kernels that can tolerate a loss of precision while still remaining correct. Because these optimizations are mostly not amenable to formal verification using the current state of the art, we present a stochastic search technique for characterizing maximum error. The technique comes with an asymptotic guarantee and provides strong evidence of correctness.
Eric Schkufza, Rahul Sharma 0001, Alex Aiken
PLDI1
2013 Stochastic superoptimization
abstract
We formulate the loop-free binary superoptimization task as a stochastic search problem. The competing constraints of transformation correctness and performance improvement are encoded as terms in a cost function, and a Markov Chain Monte Carlo sampler is used to rapidly explore the space of all possible programs to find one that is an optimization of a given target program. Although our method sacrifices completeness, the scope of programs we are able to consider, and the resulting quality of the programs that we produce, far exceed those of existing superoptimizers. Beginning from binaries compiled by llvm -O0 for 64-bit x86, our prototype implementation, STOKE, is able to produce programs which either match or outperform the code produced by gcc -O3, icc -O3, and in some cases, expert handwritten assembly.
Eric Schkufza, Rahul Sharma 0001, Alex Aiken
ASPLOS1
2013 Data-driven equivalence checking
abstract
We present a data driven algorithm for equivalence checking of two loops. The algorithm infers simulation relations using data from test runs. Once a candidate simulation relation has been obtained, off-the-shelf SMT solvers are used to check whether the simulation relation actually holds. The algorithm is sound: insufficient data will cause the proof to fail. We demonstrate a prototype implementation, called DDEC, of our algorithm, which is the first sound equivalence checker for loops written in x86 assembly.
Rahul Sharma 0001, Eric Schkufza, Berkeley R. Churchill, Alex Aiken
OOPSLA2
2011 Programming the memory hierarchy revisited: supporting irregular parallelism in sequoia
abstract
We describe two novel constructs for programming parallel machines with multi-level memory hierarchies: call-up, which allows a child task to invoke computation on its parent, and spawn, which spawns a dynamically determined number of parallel children until some termination condition in the parent is met. Together we show that these constructs allow applications with irregular parallelism to be programmed in a straightforward manner, and furthermore these constructs complement and can be combined with constructs for expressing regular parallelism. We have implemented spawn and call-up in Sequoia and we present an experimental evaluation on a number of irregular applications.
Michael Bauer 0001, Eric Schkufza, Alex Aiken
PPoPP3
2011 Interactive furniture layout using interior design guidelines
abstract
We present an interactive furniture layout system that assists users by suggesting furniture arrangements that are based on interior design guidelines. Our system incorporates the layout guidelines as terms in a density function and generates layout suggestions by rapidly sampling the density function using a hardware-accelerated Monte Carlo sampler. Our results demonstrate that the suggestion generation functionality measurably increases the quality of furniture arrangements produced by participants with no prior training in interior design.
Paul Merrell, Eric Schkufza, Maneesh Agrawala, Vladlen Koltun
ACM Trans. Graph.2
2010 Computer-generated residential building layouts
abstract
We present a method for automated generation of building layouts for computer graphics applications. Our approach is motivated by the layout design process developed in architecture. Given a set of high-level requirements, an architectural program is synthesized using a Bayesian network trained on real-world data. The architectural program is realized in a set of floor plans, obtained through stochastic optimization. The floor plans are used to construct a complete three-dimensional building with internal structure. We demonstrate a variety of computer-generated buildings produced by the presented approach.
Paul Merrell, Eric Schkufza, Vladlen Koltun
ACM Trans. Graph.2