Concurrency analysis in the presence of procedures using a data-flow framework
TAV4 Proceedings of the symposium on Testing, analysis, and verification
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Object-oriented type systems
A conservative data flow algorithm for detecting all pairs of statements that may happen in parallel
SIGSOFT '98/FSE-6 Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering
An efficient algorithm for computing MHP information for concurrent Java programs
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
Context-sensitive synchronization-sensitive analysis is undecidable
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient and precise datarace detection for multithreaded object-oriented programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Constraint-Based Inter-Procedural Analysis of Parallel Programs
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
X10: an object-oriented approach to non-uniform cluster computing
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Regular symbolic analysis of dynamic networks of pushdown systems
CONCUR 2005 - Concurrency Theory
Conditional must not aliasing for static race detection
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
May-happen-in-parallel analysis of X10 programs
Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming
Race directed random testing of concurrent programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
LICS '09 Proceedings of the 2009 24th Annual IEEE Symposium on Logic In Computer Science
Featherweight X10: a core calculus for async-finish parallelism
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Efficient computation of may-happen-in-parallel information for concurrent java programs
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
A practical MHP information analysis for concurrent java programs
LCPC'04 Proceedings of the 17th international conference on Languages and Compilers for High Performance Computing
Precise fixpoint-based analysis of programs with thread-creation and procedures
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
Hi-index | 0.00 |
For concurrent and parallel languages, the may-happen-in-parallel (MHP) decision problem asks, given two actions in the program, if there is an execution in which they can execute in parallel. Closely related, the MHP computation problem asks, given a program, which pairs of statements may happen in parallel. MHP analysis is the basis for many program analysis problems, such as data race detection and determinism checking, and researchers have devised MHP analyses for a variety of programming models. We present algorithms for static MHP analysis of a storeless abstraction of X10-like languages that have async-finish parallelism and procedures. For a program of size n, our first algorithm solves the MHP decision problem in O(n) time, via a reduction to constrained dynamic pushdown networks (CDPNs). Our second algorithm solves the MHP computation problem in O(n · max (n, k)) time, where k is a statically determined upper bound on the number of pairs that may happen in parallel. The second algorithm first runs a type-based analysis that produces a set of candidate pairs, and then it runs the decision procedure on each of those pairs. For programs without recursion, the type-based analysis is exact and gives an output-sensitive algorithm for the MHP computation problem, while for recursive programs, the type-based analysis may produce spurious pairs that the decision procedure will then remove. Our experiments on a large suite of X10 benchmarks suggest that our approach scales well. Our experiments also show that while k is O(n2) in the worst case, k is often O(n) in practice.