Abhishek Udupa

dblp:26/7125 · DBLP profile ↗
← Back
8ranked-venue papers
4as first author
0since 2021 · last 2019
—ORCID · none

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

Software engineering, systems software and programming languages · 8 · 4 first-authorTheory of computation · 2Systems, architecture and hardware · 1 · 1 first-author

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 synthesis and code generation · 46% Software maintenance and evolution · 32% Compilers and program optimization · 21%
Computer architecture, parallel and distributed computing, and storage systems
3 papers
Distributed systems · 75% Parallel and multicore computing · 25%
Theoretical computer science
2 papers
Automated reasoning and model checking · 100%
Human-computer interaction and pervasive computing
1 paper
User interface design and tools · 100%

Topics — the 8 heaviest of 11, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program synthesis and code generation
programming by example
0.412019
On the fly synthesis of edit suggestions · Proc. ACM Program. Lang. 2019
Software maintenance and evolution
refactoring
0.412019
On the fly synthesis of edit suggestions · Proc. ACM Program. Lang. 2019
Distributed systems › distributed system verification
distributed protocol verification
0.212015
Automatic Completion of Distributed Protocols with Symmetry · CAV (2) 2015
Automated reasoning and model checking
parameterized verification
0.212015
Automatic Completion of Distributed Protocols with Symmetry · CAV (2) 2015
Program synthesis and code generation › concurrent program synthesis
protocol synthesis
0.212013
TRANSIT: specifying protocols with concolic snippets · PLDI 2013
Compilers and program optimization
dependence analysis
0.112011
ALTER: exploiting breakable dependences for parallelization · PLDI 2011
Compilers and program optimization
parallelization
0.112011
ALTER: exploiting breakable dependences for parallelization · PLDI 2011
Parallel and multicore computing › parallel programming models
automatic parallelization
0.112011
ALTER: exploiting breakable dependences for parallelization · PLDI 2011

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

model checking · 0.9programming by example · 0.8extended finite state machine · 0.5constraint solving · 0.5concolic execution · 0.5symmetry reduction · 0.4dependence analysis · 0.2
YearPublicationVenuePosition
2019 On the fly synthesis of edit suggestions
abstract
When working with a document, users often perform context-specific repetitive edits – changes to the document that are similar but specific to the contexts at their locations. Programming by demonstration/examples (PBD/PBE) systems automate these tasks by learning programs to perform the repetitive edits from demonstration or examples. However, PBD/PBE systems are not widely adopted, mainly because they require modal UIs – users must enter a special mode to give the demonstration/examples. This paper presents Blue-Pencil, a modeless system for synthesizing edit suggestions on the fly. Blue-Pencil observes users as they make changes to the document, silently identifies repetitive changes, and automatically suggests transformations that can apply at other locations. Blue-Pencil is parameterized – it allows the ”plug-and-play” of different PBE engines to support different document types and different kinds of transformations. We demonstrate this parameterization by instantiating Blue-Pencil to several domains – C# and SQL code, markdown documents, and spreadsheets – using various existing PBE engines. Our evaluation on 37 code editing sessions shows that Blue-Pencil synthesized edit suggestions with a precision of 0.89 and a recall of 1.0, and took 199 ms to return suggestions on average. Finally, we report on several improvements based on feedback gleaned from a field study with professional programmers to investigate the use of Blue-Pencil during long code editing sessions. Blue-Pencil has been integrated with Visual Studio IntelliCode to power the IntelliCode refactorings feature.
Anders Miltner, Sumit Gulwani, Vu Le 0002, Alan Leung, Arjun Radhakrishna, Gustavo Soares, Ashish Tiwari 0001, Abhishek Udupa
Proc. ACM Program. Lang.8
2017 Scaling Enumerative Program Synthesis via Divide and Conquer
Rajeev Alur, Arjun Radhakrishna, Abhishek Udupa
TACAS (1)3
2015 Automatic Completion of Distributed Protocols with Symmetry
Rajeev Alur, Mukund Raghothaman, Christos Stergiou 0001, Stavros Tripakis, Abhishek Udupa
CAV (2)5
2013 Syntax-guided synthesis
Rajeev Alur, Rastislav Bodík, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, Abhishek Udupa
FMCAD10
2013 TRANSIT: specifying protocols with concolic snippets
abstract
With the maturing of technology for model checking and constraint solving, there is an emerging opportunity to develop programming tools that can transform the way systems are specified. In this paper, we propose a new way to program distributed protocols using concolic snippets. Concolic snippets are sample execution fragments that contain both concrete and symbolic values. The proposed approach allows the programmer to describe the desired system partially using the traditional model of communicating extended finite-state-machines (EFSM), along with high-level invariants and concrete execution fragments. Our synthesis engine completes an EFSM skeleton by inferring guards and updates from the given fragments which is then automatically analyzed using a model checker with respect to the desired invariants. The counterexamples produced by the model checker can then be used by the programmer to add new concrete execution fragments that describe the correct behavior in the specific scenario corresponding to the counterexample.
Abhishek Udupa, Arun Raghavan, Jyotirmoy V. Deshmukh, Sela Mador-Haim, Milo M. K. Martin, Rajeev Alur
PLDI1
2011 ALTER: exploiting breakable dependences for parallelization
abstract
For decades, compilers have relied on dependence analysis to determine the legality of their transformations. While this conservative approach has enabled many robust optimizations, when it comes to parallelization there are many opportunities that can only be exploited by changing or re-ordering the dependences in the program.
Abhishek Udupa, Kaushik Rajan, William Thies
PLDI1
2009 Software Pipelined Execution of Stream Programs on GPUs
abstract
The StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multi-core architectures. This model allows programmers to specify the structure of a program as a set of filters that act upon data, and a set of communication channels between them. The StreamIt graphs describe task, data and pipeline parallelism which can be exploited on modern graphics processing units (GPUs), as they support abundant parallelism in hardware. In this paper, we describe the challenges in mapping StreamIt to GPUs and propose an efficient technique to software pipeline the execution of stream programs on GPUs. We formulate this problem - both scheduling and assignment of filters to processors - as an efficient integer linear program (ILP), which is then solved using ILP solvers. We also describe a novel buffer layout technique for GPUs which facilitates exploiting the high memory bandwidth available in GPUs. The proposed scheduling utilizes both the scalar units in GPU, to exploit data parallelism, and multiprocessors, to exploit task and pipeline parallelism. Further it takes into consideration the synchronization and bandwidth limitations of GPUs, and yields speedups between 1.87X and 36.83X over a single threaded CPU.
Abhishek Udupa, R. Govindarajan, Matthew J. Thazhuthaveetil
CGO1
2009 Synergistic execution of stream programs on multicores with accelerators
abstract
The StreamIt programming model has been proposed to exploit parallelism in streaming applications on general purpose multicore architectures. The StreamIt graphs describe task, data and pipeline parallelism which can be exploited on accelerators such as Graphics Processing Units (GPUs) or CellBE which support abundant parallelism in hardware.
Abhishek Udupa, R. Govindarajan, Matthew J. Thazhuthaveetil
LCTES1