The theory of strictness analysis for higher order functions
on Programs as data objects
Strictness analysis and denotational abstract interpretation
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Computation of aliases and support sets
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient and correct execution of parallel programs that share memory
ACM Transactions on Programming Languages and Systems (TOPLAS)
A practical algorithm for static analysis of parallel programs
Journal of Parallel and Distributed Computing
A general-purpose algorithm for analyzing concurrent programs
Communications of the ACM
Dependence analysis for pointer variables
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
ACM Computing Surveys (CSUR)
Compiling programs with user parallelism
Selected papers of the second workshop on Languages and compilers for parallel computing
Data flow analysis of distributed communicating processes
International Journal of Parallel Programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
The design of automatic parallelizers for symbolic and numeric programs
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An Algorithm for Analyzing Communicating Processes
Proceedings of the 7th International Conference on Mathematical Foundations of Programming Semantics
Eliminating Redundant Interleavings During Concurrent Program Verification
PARLE '89 Proceedings of the Parallel Architectures and Languages Europe, Volume II: Parallel Languages
Heterogeneous parallel programming in Jade
Proceedings of the 1992 ACM/IEEE conference on Supercomputing
Data flow equations for explicitly parallel programs
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Analyzing stores and references in a parallel symbolic language
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Analyzing the communication topology of concurrent programs
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Semantic models and abstract interpretation techniques for inductive data structures and pointers
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Data flow analysis of parallel programs
PACT '95 Proceedings of the IFIP WG10.3 working conference on Parallel architectures and compilation techniques
Parallelism for free: efficient and optimal bitvector analyses for parallel programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Synchronization transformations for parallel computing
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Code motion for explicitly parallel programs
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Pointer analysis for structured parallel programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Analysis of Multithreaded Programs
SAS '01 Proceedings of the 8th International Symposium on Static Analysis
Compiler optimization techniques for OpenMP programs
Scientific Programming
Hi-index | 0.01 |
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 compiler techniques must be developed to accommodate features found in parallel languages. In this paper, we use abstract interpretation to obtain useful properties of programs, e.g., side effects, data dependences, object lifetime and concurrent expressions, for a language that supports first-class functions, pointers, dynamic allocations and explicit parallelism through cobegin. These analyses may facilitate many applications, such as program optimization, parallelization, restructuring, memory management, and detecting access anomalies.Our semantics is based on a labeled transition system and is instrumented with procedure strings to record the procedural/concurrency movement along the program interpretation. We develop analyses in both concrete domains and abstract domains, and prove the correctness and termination of the abstract interpretation.