# Parallelism for free: efficient and optimal bitvector analyses for parallel programs

@article{Knoop1996ParallelismFF, title={Parallelism for free: efficient and optimal bitvector analyses for parallel programs}, author={Jens Knoop and Bernhard Steffen and J{\"u}rgen Vollmer}, journal={ACM Trans. Program. Lang. Syst.}, year={1996}, volume={18}, pages={268-299} }

We consider parallel programs with shared memory and interleaving semantics, for which we show how to construct for unidirectional bitvector problems optimal analysis algorithms that are as efficient as their purely sequential counterparts and that can easily be implemented. Whereas the complexity result is rather obvious, our optimality result is a consequence of a new Kam/Ullman-style Coincidence Theorem. Thus using our method, the standard algorithms for sequential programs computing…

## 122 Citations

### Parallelism for Free: Bitvector Analyses -> No State Explosion!

- Computer ScienceTACAS
- 1995

A new application specific technique is presented, which is tailored to bitvector analyses, which are very common in data flow analysis and allows to adapt most of the practically relevant optimizations for sequential programs, for a parallel setting with shared variables and arbitrary interference between parallel components.

### Partial Dead Code Elimination for Parallel Programs

- Computer ScienceEuro-Par, Vol. I
- 1996

This work shows how this technique can be adapted to parallel programs with shared memory and interleaving semantics on the basis of a recently presented framework for efficient and precise bitvector analyses for parallel programs.

### Parallel Constant Propagation

- Computer ScienceEuro-Par
- 1998

This work shows how to enhance the framework underlying the transfer of bitvector problems obtaining the basis for developing a powerful algorithm for parallel constant propagation (PCP), which can be implemented as easily and as efficiently as its sequential counterpart for simple constants computed by state-of-the-art sequential optimizers.

### Code motion for explicitly parallel programs

- Computer SciencePPoPP '99
- 1999

Possible subsequent code motion transformations turn out to require much more care than originally conjectured, due to the fact that interleaving semantics, although being adequate for correctness considerations, fails when it comes to reasoning about efficiency of parallel programs.

### Constraint-Based Inter-Procedural Analysis of Parallel Programs

- Computer ScienceNord. J. Comput.
- 2000

We provide a uniform framework for the analysis of programs with procedures and explicit, unbounded, fork/join parallelism covering not only bitvector problems like reaching definitions or live…

### The Complexity of Copy Constant Detection in Parallel Programs

- Computer ScienceSTACS
- 2001

The complexity of detecting copy constants in parallel programs, a problem that may be seen as representing the next level of difficulty of data-flow problems beyond gen/kill problems, is studied.

### Compositional Bitvector Analysis for Concurrent Programs with Nested Locks

- Computer ScienceSAS
- 2010

This work proposes a new technique to perform bitvector data flow analysis for concurrent programs with nested locking synchronization and shows that this algorithm computes precise solutions to bitvector problems.

### Concurrent SSA form in the presence of mutual exclusion

- Computer ScienceProceedings. 1998 International Conference on Parallel Processing (Cat. No.98EX205)
- 1998

The CSSAME form is introduced, an extension of the Concurrent Static Single Assignment form that incorporates mutual exclusion into a data flow framework for explicitly parallel programs that use mutual exclusion synchronization.

### Dataflow Analysis for Datarace-Free Programs

- Computer ScienceESOP
- 2011

A novel scalable solution for dataflow analysis of concurrent programs, which is proved to be sound for DRF programs with SC semantics and automatically converts it to an analysis for concurrent programs.

### Universitat Passau Fakult at F Ur Mathematik Und Informatik P Eliminating Partially Dead Code in Explicitly Parallel Programs 1

- Computer Science
- 2007

This article shows how this technique can be adapted to explicitly parallel programs with shared memory and interleaving semantics on the basis of a recently presented framework and precise bitvector analyses for this program setting.

## References

SHOWING 1-10 OF 55 REFERENCES

### Parallelism for Free: Bitvector Analyses -> No State Explosion!

- Computer ScienceTACAS
- 1995

A new application specific technique is presented, which is tailored to bitvector analyses, which are very common in data flow analysis and allows to adapt most of the practically relevant optimizations for sequential programs, for a parallel setting with shared variables and arbitrary interference between parallel components.

### Data flow equations for explicitly parallel programs

- Computer SciencePPOPP '93
- 1993

It is shown how the memory consistency model specified by an explicitly parallel programming language can influence the complexity of the reaching definitions problem by selecting the “weakest” memory consistency semantics.

### Compile-time analysis of parallel programs that share memory

- Computer SciencePOPL '92
- 1992

Traditional optimization techniques for sequential programs are not directly applicable to parallel programs where concurrent activities may interfere with each other through shared variables. New…

### Optimal code motion: theory and practice

- Computer ScienceTOPL
- 1994

An implementation-oriented algorithm for lazy code motion is presented that minimizes the number of computations in programs while suppressing any unnecessary code motion in order to avoid…

### Data Structures for Optimizing Programs with Explicit Parallelism

- Computer ScienceACPC
- 1991

This paper introduces a new relation called the precedence relation and new data structures called the Parallel Control Flow Graph and the Parallel Precedence Graph for programs with parallel constructs, and shows how to report anomalies in parallel programs using Parallel Precesence Graphs.

### Static Single Assignment Form for Explicitly Parallel Programs: Theory and Practice

- Computer Science
- 1994

This work describes and proves correctness and safety of algorithms to convert programs that use the Parallel Computing Forum Parallel Sections construct into a parallel Static Single Assignment (SSA) form, which allows compilers to apply classical scalar optimization algorithms to explicitly parallel programs.

### Efficient Computation of Precedence Information in Parallel Programs

- Computer ScienceLCPC
- 1993

A more efficient algorithm to compute precedence that exploits known properties of sequential and parallel programs and the precedence relation is the same as the dominance relation is used.

### Analyzing Programs with Explicit Parallelism

- Computer ScienceLCPC
- 1991

This paper discusses semantics for parallel constructs, and introduces new intermediate forms, called the Parallel Control Flow Graph and the Parallel Precedence Graph, which have certain advantages for compiler analysis and optimization.

### State space reduction in abstract interpretation of parallel programs

- Computer ScienceProceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94)
- 1994

This paper presents state space reduction that preserves analysis precision by eliminating redundant interleavings, based on Valmari's (1990) stubborn set method, and proposes an iterative algorithm for analyzing programs with pointers and closures, in which knowledge about shared locations required by existing methods is not available.

### A variation of Knoop, Rüthing, and Steffen's Lazy Code Motion

- Computer ScienceSIGP
- 1993

Knoop, Rüthing, and Steffen published in their paper Lazy Code Motion an optimal algorithm for the elimination of partial redundancy which entirely prevents these difficulties.