Vugranam C. Sreedhar

dblp:s/VugranamCSreedhar · DBLP profile ↗
← Back
25ranked-venue papers
14as first author
0since 2021 · last 2020
—ORCID · none

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

Software engineering, systems software and programming languages · 17 · 11 first-authorSystems, architecture and hardware · 4Applied, interdisciplinary, general and emerging computing · 3 · 1 first-authorSecurity and privacy · 1 · 1 first-authorTheory of computation · 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
11 papers
Program analysis · 33% Compilers and program optimization · 29% Programming languages and type systems · 15%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Parallel and multicore computing · 46% Processor architecture and microarchitecture · 30% Distributed systems · 23%
Theoretical computer science
2 papers
Algorithms and data structures · 54% Graph algorithms and graph theory · 46%

Topics — the 25 heaviest of 29, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.132003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
A New Framework for Elimination-Based Data Flow Analysis Using DJ Graphs · ACM Trans. Program. Lang. Syst. 1998
Incremental Computation of Dominator Trees · ACM Trans. Program. Lang. Syst. 1997
Distributed systems
concurrency
0.112007
Optimized lock assignment and allocation: a method for exploiting concurrency among critical sections · PPoPP 2007
Parallel and multicore computing › synchronization
fine-grain synchronization
0.112007
Synchronization state buffer: supporting efficient fine-grain synchronization on many-core architectures · ISCA 2007
Processor architecture and microarchitecture
many-core architecture
0.112007
Synchronization state buffer: supporting efficient fine-grain synchronization on many-core architectures · ISCA 2007
Parallel and multicore computing
synchronization
0.112007
Synchronization state buffer: supporting efficient fine-grain synchronization on many-core architectures · ISCA 2007
Program analysis › static analysis › pointer analysis
escape analysis
0.122003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Escape Analysis for Java · OOPSLA 1999
Concurrent programming
lock elimination
0.122003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Escape Analysis for Java · OOPSLA 1999
Compilers and program optimization › parallel program optimization
synchronization optimization
0.012003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Program analysis
data flow analysis
0.031998
A New Framework for Elimination-Based Data Flow Analysis Using DJ Graphs · ACM Trans. Program. Lang. Syst. 1998
A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs · PLDI 1996
A Linear Time Algorithm for Placing phi-nodes · POPL 1995
Programming languages and type systems
language design
0.012002
Mixin Up components · ICSE 2002
Programming languages and type systems › inheritance
mixins
0.012002
Mixin Up components · ICSE 2002
Programming languages and type systems
type systems
0.012002
Mixin Up components · ICSE 2002
Requirements engineering and software design › component-based software
software components
0.012001
York: programming software components · ESEC / SIGSOFT FSE 2001
Compilers and program optimization
interprocedural optimization
0.012000
A framework for interprocedural optimization in the presence of dynamic class loading · PLDI 2000
Runtime systems and virtual machines › runtime memory management
stack allocation
0.011999
Escape Analysis for Java · OOPSLA 1999
Concurrent programming
synchronization
0.011999
Escape Analysis for Java · OOPSLA 1999
Program analysis › static analysis
incremental analysis
0.011998
A New Framework for Elimination-Based Data Flow Analysis Using DJ Graphs · ACM Trans. Program. Lang. Syst. 1998
Compilers and program optimization › compiler analysis
dominator trees
0.011997
Incremental Computation of Dominator Trees · ACM Trans. Program. Lang. Syst. 1997
Algorithms and data structures › dynamic algorithms
incremental algorithms
0.011997
Incremental Computation of Dominator Trees · ACM Trans. Program. Lang. Syst. 1997
Program analysis › data flow analysis
incremental data flow analysis
0.011996
A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs · PLDI 1996
Compilers and program optimization › intermediate representation › static single assignment form
phi-node placement
0.011995
A Linear Time Algorithm for Placing phi-nodes · POPL 1995
Compilers and program optimization › intermediate representation
static single assignment form
0.011995
A Linear Time Algorithm for Placing phi-nodes · POPL 1995
Runtime systems and virtual machines › managed runtime
java runtime
0.012003
Stack allocation and synchronization optimizations for Java using escape analysis · ACM Trans. Program. Lang. Syst. 2003
Requirements engineering and software design
software architecture
0.012001
York: programming software components · ESEC / SIGSOFT FSE 2001
Program analysis › static analysis › interprocedural analysis
whole-program analysis
0.012000
A framework for interprocedural optimization in the presence of dynamic class loading · PLDI 2000

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

lock assignment · 0.1lock allocation · 0.1detailed simulation · 0.1connection graph · 0.1interprocedural analysis · 0.0subtype relation · 0.0runtime invalidation · 0.0recompilation · 0.0data flow analysis · 0.0dominance frontier · 0.0DJ graph representation · 0.0tarjan's interval-finding algorithm · 0.0
YearPublicationVenuePosition
2020 Auto-Generation of Domain-Specific Systems: Cloud-Hosted DevOps for Business Users
abstract
The wide use of spreadsheet-based solutions for business processes illustrates the importance of giving business users simple mechanisms for specifying and managing their processes. However, spreadsheet-based solutions are hard to maintain, reuse, integrate, and scale. This paper describes an approach for supporting “DevOps for business users” that enables business-level users to manage the full lifecycle of a large class of cloud-hosted business processes. The approach builds on DevOps for software engineering, but removes software engineers from the loop. Unlike general-purpose “low code” business process management systems, the approach incorporates aspects of a processing domain (e.g., billing) to create a DevOps experience that business users can master easily. In the approach, business users follow an agile “specify-check-generate-deploy” methodology, enabling them to rapidly and iteratively generate and operationalize cloud-hosted processing systems, with little or no assistance from IT staff. We demonstrate and evaluate the approach using a system built for the billing application area, developed at IBM, which provides technology support and maintenance services for numerous clients, each with different billing needs and logic. The paper describes the system, requirements, empirical evaluation of key components, and lessons learned.
Saurabh Sinha 0003, Tara Astigarraga, Richard Hull 0001, Nerla Jean-Louis, Vugranam C. Sreedhar, Lianxue Hu, Federico E. Carpi, Juan Ariel Brusco Cannata, William Loach
CLOUD5
2018 Service Management of Blockchain Networks
abstract
Business interest in blockchain technology is increasing due the potential for change that it offers. Large scale adoption in enterprise IT environments brings about a need for service management and DevOps processes for blockchain deployments. Nodes in the network may fail or be taken down for maintenance requiring visibility across hybrid, traditional, cloud enabled and cloud native deployments. Service management is necessary to ease deployment woes for those looking to install code within their own data centers on-premises or on dedicated cloud servers and further to handle the life cycle of the deployments that includes security patches, critical updates, upgrades, change management and restarting services. In this paper, we provide a mechanism to optimally perform such operations with no disruption to the consensus and transactions for such emerging blockchain applications.
Alexei A. Karve, Vugranam C. Sreedhar, Sai Zeng
IEEE CLOUD3
2014 Effort Analysis Using Collective Stochastic Model
Vugranam C. Sreedhar
ICSOC1
2013 A Framework for Cross Account Analysis
Vugranam C. Sreedhar
ICSOC1
2011 Analysis and performance results of computing betweenness centrality on IBM Cyclops64
Guangming Tan, Vugranam C. Sreedhar, Guang R. Gao
J. Supercomput.2
2010 A novel analysis space for pointer analysis and its application for bug finding
Marcio Buss, Daniel Brand, Vugranam C. Sreedhar, Stephen A. Edwards
Sci. Comput. Program.3
2007 Evidence-Based Analysis and Inferring Preconditions for Bug Detection
abstract
An important part of software maintenance is fixing software errors and bugs. Static analysis based tools can tremendously help and ease software maintenance. In order to gain user acceptance, a static analysis tool for detecting bugs has to minimize the incidence of false alarms. A common cause of false alarms is the uncertainty over which inputs into a program are considered legal. In this paper we introduce evidence-based analysis to address this problem. Evidence-based analysis allows one to infer legal preconditions over inputs, without having users to explicitly specify those preconditions. We have found that the approach drastically improves the usability of such static analysis tools. In this paper we report our experience with the analysis in an industrial deployment.
Daniel Brand, Marcio Buss, Vugranam C. Sreedhar
ICSM3
2007 Synchronization state buffer: supporting efficient fine-grain synchronization on many-core architectures
abstract
Efficient fine-grain synchronization is extremely important to effectively harness the computational power of many-core architectures. However, designing and implementing finegrain synchronization in such architectures presents several challenges, including issues of synchronization induced overhead, storage cost, scalability, and the level of granularity to which synchronization is applicable. This paper proposes the Synchronization State Buffer (SSB), a scalable architectural design for fine-grain synchronization that efficiently performs synchronizations between concurrent threads. The design of SSB is motivated by the following observation: at any instance during the parallel execution only a small fraction of memory locations are actively participating in synchronization. Based on this observation we present a fine-grain synchronization design that records and manages the states of frequently synchronized data using modest hardware support. We have implemented the SSB design in the context of the 160-core IBM Cyclops-64 architecture. Using detailed simulation, we present our experience for a set of benchmarks with different workload characteristics.
Weirong Zhu, Vugranam C. Sreedhar, Ziang Hu, Guang R. Gao
ISCA2
2007 Optimized lock assignment and allocation: a method for exploiting concurrency among critical sections
abstract
No abstract available.
Vugranam C. Sreedhar, Weirong Zhu, Vivek Sarkar, Guang R. Gao
PPoPP2
2006 Data-centric security: role analysis and role typestates
abstract
In J2EE and .NET roles are assigned to methods using external configuration files, called the deployment descriptors. Assigning roles to methods, although conceptually simple, in practice it is quite complicated. For instance, in order for a deployer to assign a role r to a method m, the deployer must understand the set of roles R that are assigned to each method n that can be invoked directly or indirectly from m, and that r has to be consistently assigned with respect R. Understanding such role consistency is a non-trivial task. Also, in J2EE roles are defined with respect to method access and not data access. Therefore, in order to protect sensitive data, one has to encode data access control using method access control. This can lead to interesting and subtle access control problems when accessing sensitive data, including information leakage through data flow from one method to another.In this paper we focus on data-centric security by presenting two concepts: Role Analysis: We present a simple interprocedural static analysis for detecting security problems when objects are accessed by multiple methods that do not have compatible or consistent assignment of roles. We then introduce the notion of an object escaping a role and present a simple interprocedural static analysis for computing the set of objects that may escape a role. Consistency-Based Security and Role Typestates: We extend J2EE method-based role assignment to consistency-based role assignment. In this paper we will focus on assigning roles to typestates rather than methods.
Vugranam C. Sreedhar
SACMAT1
2005 Interprocedural Analysis for Privileged Code Placement and Tainted Variable Detection
Marco Pistoia, Robert J. Flynn, Larry Koved, Vugranam C. Sreedhar
ECOOP4
2005 From statecharts to ESP: programming with events, states and predicates for embedded systems
abstract
Statecharts are probably the most popular mechanism for behavior modeling of embedded system components. Modeling a component involves using a mainstream language for features that statecharts cannot express: detailed behavior of conditions and actions, object-orientation and distributed computing features. Debugging is done at the level of the generated native code. Rather than treating statecharts as a separate programming model from the native programming model, we extend a (Java-like) language with support for key concepts of statecharts: (1) explicit states, (2) asynchronous events, and (3) conditional execution. This paper presents ESP*, a language that supports statecharts and a set of other advanced programming concepts to make programming embedded systems easier. The paper also shows how to translate statecharts to ESP*.
Vugranam C. Sreedhar, Maria-Cristina V. Marinescu
EMSOFT1
2005 Instrumenting annotated programs
abstract
Instrumentation is commonly used to track application behavior: to collect program profiles; to monitor component health and performance; to aid in component testing; and more. Program annotation enables developers and tools to pass extra information to later stages of software development and execution. For example, the .NET runtime relies on annotations for a significant chunk of the services it provides. Both mechanisms are evolving into important parts of software development %, in the context of modern platforms such as Java and .NET.Instrumentation tools are generally not aware of the semantics of information passed via the annotation mechanism. This is especially true for post-compiler, e.g., run-time, instrumentation. The problem is that instrumentation may affect the correctness of annotations, rendering them invalid or misleading, and producing unforeseen side-effects during program execution. This problem has not been addressed so far.In this paper, we show the subtle interaction that takes place between annotations and instrumentation using several real-life examples. Many annotations are intended to provide information for the runtime; the virtual environment is a prominent annotation consumer, and must be aware of this conflict. It may also be required to provide runtime support to other annotation consumers. We propose an annotation taxonomy and show how instrumentation affects various annotations that were used in research and in industrial applications. We show how the annotations can expose enough information about themselves to prevent the instrumentation from accidentally corrupting the annotations. We demonstrate this approach on our annotations benchmark.
Marina Biberstein, Vugranam C. Sreedhar, Bilha Mendelson, Daniel Citron, Alberto Giammaria
VEE2
2003 Stack allocation and synchronization optimizations for Java using escape analysis
abstract
This article presents an escape analysis framework for Java to determine (1) if an object is not reachable after its method of creation returns, allowing the object to be allocated on the stack, and (2) if an object is reachable only from a single thread during its lifetime, allowing unnecessary synchronization operations on that object to be removed. We introduce a new program abstraction for escape analysis, the connection graph , that is used to establish reachability relationships between objects and object references. We show that the connection graph can be succinctly summarized for each method such that the same summary information may be used in different calling contexts without introducing imprecision into the analysis. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the nonescaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in the user code in three out of the ten benchmarks (with a median of 19%); 11% to 92% of all mutex lock operations are eliminated in those 10 programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333-MHz PowerPC workstation with 512 MB memory.
Jong-Deok Choi, Manish Gupta 0002, Mauricio J. Serrano, Vugranam C. Sreedhar, Samuel P. Midkiff
ACM Trans. Program. Lang. Syst.4
2002 Mixin Up components
abstract
Recently we proposed a language called ACOEL (A Component-Oriented Extension Language) for abstracting and composing software components. Components in ACOEL are black-box components, and each component consists of (1) an internal implementation containing classes, methods, and fields that is hidden to the external world, and (2) an external contract consisting of a set of typed input and output ports. Components in ACOEL interact with each other only via these ports. In this paper we extend ACOEL in two directions: (1) use mixins to customize the services provided by a component without exposing its internal implementation, (2) add support for virtual types and sub-type relation among components. We will show how mixins and virtual types together allows us to build adaptable applications based on black-box component principles.
Vugranam C. Sreedhar
ICSE1
2001 York: programming software components
abstract
No abstract available.
Vugranam C. Sreedhar
ESEC / SIGSOFT FSE1
2000 A framework for interprocedural optimization in the presence of dynamic class loading
abstract
Dynamic class loading during program execution in the Java Programming Language is an impediment for generating code that is as efficient as code generated using static whole-program analysis and optimization. Whole-program analysis and optimization is possible for languages, such as C++, that do not allow new classes and/or methods to be loaded during program execution. One solution for performing whole-program analysis and avoiding incorrect execution after a new class is loaded is to invalidate and recompile affected methods. Runtime invalidation and recompilation mechanisms can be expensive in both space and time, and, therefore, generally restrict optimization.
Vugranam C. Sreedhar, Michael G. Burke, Jong-Deok Choi
PLDI1
1999 Escape Analysis for Java
abstract
This paper presents a simple and efficient data flow algorithm for escape analysis of objects in Java programs to determine (i) if an object can be allocated on the stack; (ii) if an object is accessed only by a single thread during its lifetime, so that synchronization operations on that object can be removed. We introduce a new program abstraction for escape analysis, the connection graph, that is used to establish reachability relationships between objects and object references. We show that the connection graph can be summarized for each method such that the same summary information may be used effectively in different calling contexts. We present an interprocedural algorithm that uses the above property to efficiently compute the connection graph and identify the non-escaping objects for methods and threads. The experimental results, from a prototype implementation of our framework in the IBM High Performance Compiler for Java, are very promising. The percentage of objects that may be allocated on the stack exceeds 70% of all dynamically created objects in three out of the ten benchmarks (with a median of 19%), 11% to 92% of all lock operations are eliminated in those ten programs (with a median of 51%), and the overall execution time reduction ranges from 2% to 23% (with a median of 7%) on a 333 MHz PowerPC workstation with 128 MB memory.
Jong-Deok Choi, Manish Gupta 0002, Mauricio J. Serrano, Vugranam C. Sreedhar, Samuel P. Midkiff
OOPSLA4
1999 Translating Out of Static Single Assignment Form
Vugranam C. Sreedhar, Roy Dz-Ching Ju, David M. Gillies, Vatsa Santhanam
SAS1
1998 A New Framework for Elimination-Based Data Flow Analysis Using DJ Graphs
abstract
In this article, we present a new framework for elimination-based exhaustive and incremental data flow analysis using the DJ graph representation of a program.Unlike previous approaches to elimination-based incremental data flow analysis, our approach can handle arbitrary structural and nonstructural changes to program flowgraphs, including irreducibility.We show how our approach is related to dominance frontiers, and we exploit this relationship to establish the complexity of our exhaustive analysis and to aid the design of our incremental analysis.
Vugranam C. Sreedhar, Guang R. Gao, Yong-Fong Lee
ACM Trans. Program. Lang. Syst.1
1997 Incremental Computation of Dominator Trees
abstract
In this article, we present a new algorithm for incrementally maintaining the dominator tree of an arbitrary flowgraph.Previous work most relevant to this article includes only the Carroll-Ryder algorithm and the Ramalingam-Reps algorithm.Both these methods are restricted to reducible flowgraphs.By contrast, our approach can handle irreducible as well as reducible flowgraphs.For the case where an edge is inserted, our incremental algorithm is also faster than previous incremental algorithms in the worst case.For the deletion case, our algorithm has a quadratic time complexity in the worst case.
Vugranam C. Sreedhar, Guang R. Gao, Yong-Fong Lee
ACM Trans. Program. Lang. Syst.1
1996 A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs
abstract
We present a new elimination-based framework for exhaustive and incremental data flow analysis using the DJ graph representation of a program. Unlike the previous approaches to elimination-based incremental data flow analysis, our approach can handle arbitrary non-structural and structural changes to program flowgraphs, including those causing irreducibility. We show how our approach is related to (iterated) dominance frontiers, and exploit this relationship to establish the complexity of our exhaustive analysis and to aid the design of our incremental analysis.
Vugranam C. Sreedhar, Guang R. Gao, Yong-Fong Lee
PLDI1
1996 Identifying Loops Using DJ Graphs
abstract
Loop identification is a necessary step in loop transformations for high-performance architectures. One classical technique for detecting loops is Tarjan's interval-finding algorithm. The intervals identified by Tarjan's method are single-entry, strongly connected subgraphs that closely reflect a program's loop structure. We present a simple algorithm for identifying both reducible and irreducible loops using DJ graphs. Our method is a generalization of Tarjan's method, as it identifies nested intervals (or loops) even in the presence of irreducibility.
Vugranam C. Sreedhar, Guang R. Gao, Yong-Fong Lee
ACM Trans. Program. Lang. Syst.1
1995 A Linear Time Algorithm for Placing phi-nodes
abstract
Dataflow analysis framework based on Static Single Assignment (SSA) form and Sparse Evaluation Graphs (SEGs) demand fast computation of program points where data flow information must be merged, the so-called φ-nodes. In this paper, we present a surprisingly simple algorithm for computing φ-nodes for arbitrary flowgraphs (reducible or irreducible) that runs in linear time. We employ a novel program representation—the DJ graph—by augmenting the dominator tree of a flowgraph with edges which may lead to a potential “merge” of dataflow information. In searching for φ-nodes we never visit an edge in the DJ-graph more than once by guiding the search of nodes by their levels in the dominator tree.
Vugranam C. Sreedhar, Guang R. Gao
POPL1
1993 Capturing Strong Reduction in Director String Calculus
Vugranam C. Sreedhar, Kazem Taghva
Theor. Comput. Sci.1