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.

Radu Rugina

dblp:r/RaduRugina · DBLP profile ↗
← Back
20ranked-venue papers
7as first author
0since 2021 · last 2012
—ORCID · none

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

Software engineering, systems software and programming languages · 16 · 6 first-authorSystems, architecture and hardware · 4 · 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
10 papers
Program analysis · 72% Operating systems · 11% Compilers and program optimization · 9%
Computer architecture, parallel and distributed computing, and storage systems
4 papers
Distributed systems · 47% Parallel and multicore computing · 28% Processor architecture and microarchitecture · 25%

Topics — the 23 heaviest of 24, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis › static analysis
pointer analysis
0.372008
Demand-driven alias analysis for C · POPL 2008
Symbolic bounds analysis of pointers, array indices, and accessed memory regions · ACM Trans. Program. Lang. Syst. 2005
Region-based shape analysis with tracked locations · POPL 2005
Operating systems
virtualization
0.112012
Software Techniques for Avoiding Hardware Virtualization Exits · USENIX ATC 2012
Program analysis
static analysis
0.132007
Practical memory leak detection using guarded value-flow analysis · PLDI 2007
Symbolic bounds analysis of pointers, array indices, and accessed memory regions · PLDI 2000
Pointer Analysis for Multithreaded Programs · PLDI 1999
Program analysis
CFL-reachability
0.112008
Demand-driven alias analysis for C · POPL 2008
Program analysis › static analysis › pointer analysis
demand-driven alias analysis
0.112008
Demand-driven alias analysis for C · POPL 2008
Program verification › model checking › state space exploration
reachability analysis
0.112008
Demand-driven alias analysis for C · POPL 2008
Distributed systems
fault tolerance
0.112008
Compiler-enhanced incremental checkpointing for OpenMP applications · PPoPP 2008
Program analysis › resource analysis
resource bound analysis
0.122005
Symbolic bounds analysis of pointers, array indices, and accessed memory regions · ACM Trans. Program. Lang. Syst. 2005
Symbolic bounds analysis of pointers, array indices, and accessed memory regions · PLDI 2000
Program analysis › error detection
memory leak detection
0.112007
Practical memory leak detection using guarded value-flow analysis · PLDI 2007
Program analysis › heap analysis
heap abstraction
0.112005
Region-based shape analysis with tracked locations · POPL 2005
Program analysis › static analysis › pointer analysis
shape analysis
0.112005
Region-based shape analysis with tracked locations · POPL 2005
Processor architecture and microarchitecture › instruction set architecture
virtualization support
0.012012
Software Techniques for Avoiding Hardware Virtualization Exits · USENIX ATC 2012
Parallel and multicore computing › parallel programming models
structured parallelism
0.012003
Pointer analysis for structured parallel programs · ACM Trans. Program. Lang. Syst. 2003
Compilers and program optimization › parallelization
automatic parallelization
0.011999
Automatic Parallelization of Divide and Conquer Algorithms · PPoPP 1999
Program analysis › static analysis › pointer analysis
interprocedural pointer analysis
0.011999
Automatic Parallelization of Divide and Conquer Algorithms · PPoPP 1999
Concurrent programming › concurrency models › multithreading
multithreaded programs
0.011999
Pointer Analysis for Multithreaded Programs · PLDI 1999
Program analysis › static analysis
interprocedural analysis
0.012007
Practical memory leak detection using guarded value-flow analysis · PLDI 2007
Systems and software security › memory safety
memory error detection
0.012005
Region-based shape analysis with tracked locations · POPL 2005
Systems and software security
memory safety
0.012005
Region-based shape analysis with tracked locations · POPL 2005
Program analysis › concurrent program analysis
static race detection
0.012005
Symbolic bounds analysis of pointers, array indices, and accessed memory regions · ACM Trans. Program. Lang. Syst. 2005
Compilers and program optimization
parallelizing compiler
0.012003
Pointer analysis for structured parallel programs · ACM Trans. Program. Lang. Syst. 2003
Program analysis › error detection
array bounds checking
0.012000
Symbolic bounds analysis of pointers, array indices, and accessed memory regions · PLDI 2000
Parallel and multicore computing › parallel programming models › structured parallelism
recursive parallel programs
0.011999
Automatic Parallelization of Divide and Conquer Algorithms · PPoPP 1999

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

context-sensitive analysis · 0.2incremental checkpointing · 0.2compiler analysis · 0.2incremental analysis · 0.1worklist algorithm · 0.1linear programming · 0.1interprocedural analysis · 0.1value-flow graph · 0.1reachability analysis · 0.1inter-procedural analysis · 0.1inequality constraint solving · 0.1pointer analysis · 0.0alias analysis · 0.0symbolic analysis · 0.0flow-sensitive analysis · 0.0
YearPublicationVenuePosition
2012 Software Techniques for Avoiding Hardware Virtualization Exits
Ole Agesen, Jim Mattson, Radu Rugina, Jeffrey Sheldon
USENIX ATC3
2009 Compiler-enhanced incremental checkpointing for OpenMP applications
abstract
As modern supercomputing systems reach the peta-flop performance range, they grow in both size and complexity. This makes them increasingly vulnerable to failures from a variety of causes. Checkpointing is a popular technique for tolerating such failures, enabling applications to periodically save their state and restart computation after a failure. Although a many automated system-level checkpointing solutions are currently available to HPC users, manual application-level checkpointing remains more popular due to its superior performance. This paper improves performance of automated checkpointing via a compiler analysis for incremental checkpointing. This analysis, which works with both sequential and OpenMP applications, reduces checkpoint sizes by as much as 80% and enables asynchronous checkpointing.
Greg Bronevetsky, Daniel Marques, Keshav Pingali, Sally A. McKee, Radu Rugina
IPDPS5
2008 Demand-driven alias analysis for C
abstract
This paper presents a demand-driven, flow-insensitive analysisalgorithm for answering may-alias queries. We formulate thecomputation of alias queries as a CFL-reachability problem, and use this formulation to derive a demand-driven analysis algorithm. The analysis uses a worklist algorithm that gradually explores the program structure and stops as soon as enough evidence is gathered to answer the query. Unlike existing techniques, our approach does not require building or intersecting points-to sets.
Radu Rugina
POPL2
2008 Compiler-enhanced incremental checkpointing for OpenMP applications
abstract
As modern supercomputing systems reach peta-flop performance they grow in both size and complexity, becoming increasingly vulnerable to failures. Checkpointing is a popular technique for tolerating such failures. Although a variety of automated system-level checkpointing solutions are currently available to HPC users, manual application-level checkpointing remains more popular due to its superior performance. This paper improves performance of automated checkpointing by presenting a compiler analysis for incremental checkpointing. This analysis, which works with both sequential and OpenMP applications, significantly reduces checkpoint sizes and enables asynchronous checkpointing.
Greg Bronevetsky, Daniel Marques, Keshav Pingali, Radu Rugina, Sally A. McKee
PPoPP4
2007 A Practical Escape and Effect Analysis for Building Lightweight Method Summaries
Sigmund Cherem, Radu Rugina
CC2
2007 Uniqueness inference for compile-time object deallocation
abstract
This paper presents an analysis and transformation for individual object reclamation in Java programs. First, we propose a uniqueness inference algorithm that identifies variables and object fields that hold unique references. The algorithm performs an intra-procedural analysis of each method, and then builds and solves a set of inter-procedural uniqueness dependencies to find the global solution. Second, our system uses the uniqueness information to automatically instrument programs with explicit deallocation of individual objects. A key feature of the transformation is its ability to deallocate entire heap structures, including recursive structures, when their root objects are freed. This is achieved by generating object destructors that recursively free all of the unique object fields. Our experiments show that the analysis is effective at reclaiming a large fraction of the objects at a low analysis cost.
Sigmund Cherem, Radu Rugina
ISMM2
2007 Practical memory leak detection using guarded value-flow analysis
abstract
This paper presents a practical inter-procedural analysis algorithm for detecting memory leaks in C programs. Our algorithm tracks the flow of values from allocation points to deallocation points using a sparse representation of the program consisting of a value flow graph that captures def-use relations and value flows via program assignments. Edges in the graph are annotated with guards that describe branch conditions in the program. The memory leak analysis is reduced to a reachability problem over the guarded value flowgraph. Our implemented tool has been effective at detecting more than 60 memory leaks in the SPEC2000 benchmarks and in two open-source applications, bash and sshd, while keeping the false positive rate below 20%. The sparse program representation makes the tool efficient in practice, and allows it to report concise error messages.
Sigmund Cherem, Lonnie Princehouse, Radu Rugina
PLDI3
2007 Maintaining Doubly-Linked List Invariants in Shape Analysis with Local Reasoning
Sigmund Cherem, Radu Rugina
VMCAI2
2006 Compile-time deallocation of individual objects
abstract
This paper presents a static analysis and transformation system that enables the deallocation of individual objects in Java programs. Given an input program, the compiler automatically inserts free statements to deallocate individual objects. This transformation is enabled by an inter-procedural, context-sensitive dataflow analysis that tracks the state of one object instance at a time, from the point where it is allocated, and up to the point where the object instance becomes unreachable and can be freed.For the SPECjvm98 benchmarks, free-instrumented programs generated by our compiler and executed in a virtual machine with explicit memory deallocation reclaim, on average, more than 50%of the total memory allocated by the program, and have a low run-time overhead of 1%. For several benchmarks, the analysis can free more than 85% of the total memory.
Sigmund Cherem, Radu Rugina
ISMM2
2006 Memory Leak Analysis by Contradiction
Maksim Orlovich, Radu Rugina
SAS2
2005 Region-based shape analysis with tracked locations
abstract
This paper proposes a novel approach to shape analysis: using local reasoning about individual heap locations instead of global reasoning about entire heap abstractions. We present an inter-procedural shape analysis algorithm for languages with destructive updates. The key feature is a novel memory abstraction that differs from traditional abstractions in two ways. First, we build the shape abstraction and analysis on top of a pointer analysis. Second, we decompose the shape abstraction into a set of independent configurations, each of which characterizes one single heap location. Our approach: 1) leads to simpler algorithm specifications, because of local reasoning about the single location; 2) leads to efficient algorithms, because of the smaller granularity of the abstraction; and 3) makes it easier to develop context-sensitive, demand-driven, and incremental shape analyses.We also show that the analysis can be used to enable the static detection of memory errors in programs with explicit deallocation. We have built a prototype tool that detects memory leaks and accesses through dangling pointers in C programs. The experiments indicate that the analysis is sufficiently precise to detect errors with low false positive rates; and is sufficiently lightweight to scale to larger programs. For a set of three popular C programs, the tool has analyzed about 70K lines of code in less than 2 minutes and has produced 97 warnings, 38 of which were actual errors.
Brian Hackett, Radu Rugina
POPL2
2005 Symbolic bounds analysis of pointers, array indices, and accessed memory regions
abstract
This article presents a novel framework for the symbolic bounds analysis of pointers, array indices, and accessed memory regions. Our framework formulates each analysis problem as a system of inequality constraints between symbolic bound polynomials. It then reduces the constraint system to a linear program. The solution to the linear program provides symbolic lower and upper bounds for the values of pointer and array index variables and for the regions of memory that each statement and procedure accesses. This approach eliminates fundamental problems associated with applying standard fixed-point approaches to symbolic analysis problems. Experimental results from our implemented compiler show that the analysis can solve several important problems, including static race detection, automatic parallelization, static detection of array bounds violations, elimination of array bounds checks, and reduction of the number of bits used to store computed values.
Radu Rugina, Martin C. Rinard
ACM Trans. Program. Lang. Syst.1
2004 Region analysis and transformation for Java programs
abstract
This paper presents a region analysis and transformation framework for Java programs. Given an input Java program, the compiler automatically translates it into an equivalent output program with region-based memory management. The generated program contains statements for creating regions, allocating objects in regions, removing regions, and passing regions as parameters. As a particular case, the analysis can enable the allocation of objects on the stack.
Sigmund Cherem, Radu Rugina
ISMM2
2004 Shape Analysis Quantitative Shape Analysis
Radu Rugina
SAS1
2003 Static Analysis of Accessed Regions in Recursive Data Structures
Stephen Chong, Radu Rugina
SAS2
2003 Pointer analysis for structured parallel programs
abstract
This paper presents a novel interprocedural, flow-sensitive, and context-sensitive pointer analysis algorithm for multithreaded programs that may concurrently update shared pointers. The algorithm is designed to handle programs with structured parallel constructs, including fork-join constructs, parallel loops, and conditionally spawned threads. For each pointer and each program point, the algorithm computes a conservative approximation of the memory locations to which that pointer may point. The algorithm correctly handles a wide range of programming language constructs, including recursive functions, recursively generated parallelism, function pointers, structures, arrays, nested structures and arrays, pointer arithmetic, casts between different pointer types, heap and stack allocated memory, shared global variables, and thread-private global variables. We have implemented the algorithm in the SUIF compiler system and used the implementation to analyze a set of multithreaded programs written in the Cilk programming language. Our experimental results show that the analysis has good precision and converges quickly for our set of Cilk programs.
Radu Rugina, Martin C. Rinard
ACM Trans. Program. Lang. Syst.1
2001 Design-Driven Compilation
Radu Rugina, Martin C. Rinard
CC1
2000 Symbolic bounds analysis of pointers, array indices, and accessed memory regions
abstract
This paper presents a novel framework for the symbolic bounds analysis of pointers, array indices, and accessed memory regions. Our framework formulates each analysis problem as a system of inequality constraints between symbolic bound polynomials. It then reduces the constraint system to a linear program. The solution to the linear program provides symbolic lower and upper bounds for the values of pointer and array index variables and for the regions of memory that each statement and procedure accesses. This approach eliminates fundamental problems associated with applying standard fixed-point approaches to symbolic analysis problems. Experimental results from our implemented compiler show that the analysis can solve several important problems, including static race detection, automatic parallelization, static detection of array bounds violations, elimination of array bounds checks, and reduction of the number of bits used to store computed values.
Radu Rugina, Martin C. Rinard
PLDI1
1999 Pointer Analysis for Multithreaded Programs
abstract
This paper presents a novel interprocedural, flow-sensitive, and context-sensitive pointer analysis algorithm for multithreaded programs that may concurrently update shared pointers. For each pointer and each program point, the algorithm computes a conservative approximation of the memory locations to which that pointer may point. The algorithm correctly handles a full range of constructs in multithreaded programs, including recursive functions, function pointers, structures, arrays, nested structures and arrays, pointer arithmetic, casts between pointer variables of different types, heap and stack allocated memory, shared global variables, and thread-private global variables. We have implemented the algorithm in the SUIF compiler system and used the implementation to analyze a sizable set of multithreaded programs written in the Cilk multithreaded programming language. Our experimental results show that the analysis has good precision and converges quickly for our set of Cilk programs. 1
Radu Rugina, Martin C. Rinard
PLDI1
1999 Automatic Parallelization of Divide and Conquer Algorithms
abstract
Divide and conquer algorithms are a good match for modern parallel machines: they tend to have large amounts of inherent parallelism and they work well with caches and deep memory hierarchies. But these algorithms pose challenging problems for parallelizing compilers. They are usually coded as recursive procedures and often use pointers into dynamically allocated memory blocks and pointer arithmetic. All of these features are incompatible with the analysis algorithms in traditional parallelizing compilers.This paper presents the design and implementation of a compiler that is designed to parallelize divide and conquer algorithms whose subproblems access disjoint regions of dynamically allocated arrays. The foundation of the compiler is a flow-sensitive, context-sensitive, and interprocedural pointer analysis algorithm. A range of symbolic analysis algorithms build on the pointer analysis information to extract symbolic bounds for the memory regions accessed by (potentially recursive) procedures that use pointers and pointer arithmetic. The symbolic bounds information allows the compiler to find procedure calls that can execute in parallel without violating the data dependences. The compiler generates code that executes these calls in parallel. We have used the compiler to parallelize several programs that use divide and conquer algorithms. Our results show that the programs perform well and exhibit good speedup.
Radu Rugina, Martin C. Rinard
PPoPP1