A linear algorithm for finding dominators in flow graphs and related problems
STOC '85 Proceedings of the seventeenth annual ACM symposium on Theory of computing
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
Static analysis of low-level synchronization
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Detecting equality of variables in programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrency analysis in the presence of procedures using a data-flow framework
TAV4 Proceedings of the symposium on Testing, analysis, and verification
A model of Ada programs for static deadlock detection in polynomial times
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Static slicing of threaded programs
Proceedings of the 1998 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
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
A fast algorithm for finding dominators in a flowgraph
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
Optimizing Supercompilers for Supercomputers
Optimizing Supercompilers for Supercomputers
LCPC '97 Proceedings of the 10th International Workshop on Languages and Compilers for Parallel Computing
A Concurrent Execution Semantics for Parallel Program Graphs and Program Dependence Graphs
Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing
Parallel Program Graphs and their Classification
Proceedings of the 6th International Workshop on Languages and Compilers for Parallel Computing
Data Flow Analysis for Checking Properties of Concurrent Java Programs
Data Flow Analysis for Checking Properties of Concurrent Java Programs
Compilation techniques for explicitly parallel programs
Compilation techniques for explicitly parallel programs
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
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
Concurrency Analysis for Shared Memory Programs with Textually Unaligned Barriers
Languages and Compilers for Parallel Computing
Static Detection of Place Locality and Elimination of Runtime Checks
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Compile-Time Analysis and Specialization of Clocks in Concurrent Programs
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Featherweight X10: a core calculus for async-finish parallelism
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Proceedings of the Conference on Design, Automation and Test in Europe
Static analysis of dynamic schedules and its application to optimization of parallel programs
LCPC'10 Proceedings of the 23rd international conference on Languages and compilers for parallel computing
Habanero-Java: the new adventures of old X10
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
Intermediate language extensions for parallelism
Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11
Introducing ScaleGraph: an X10 library for billion scale graph analytics
Proceedings of the 2012 ACM SIGPLAN X10 Workshop
Permission regions for race-free parallelism
RV'11 Proceedings of the Second international conference on Runtime verification
Analysis of may-happen-in-parallel in concurrent objects
FMOODS'12/FORTE'12 Proceedings of the 14th joint IFIP WG 6.1 international conference and Proceedings of the 32nd IFIP WG 6.1 international conference on Formal Techniques for Distributed Systems
MayPar: a may-happen-in-parallel analyzer for concurrent objects
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Efficient may happen in parallel analysis for async-finish parallelism
SAS'12 Proceedings of the 19th international conference on Static Analysis
Efficient data race detection for async-finish parallelism
Formal Methods in System Design
Constraint-based locality analysis for X10 programs
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Array dataflow analysis for polyhedral X10 programs
Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming
A Transformation Framework for Optimizing Task-Parallel Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient concurrency-bug detection across inputs
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Analysis of Recursively Parallel Programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interprocedural strength reduction of critical sections in explicitly-parallel programs
PACT '13 Proceedings of the 22nd international conference on Parallel architectures and compilation techniques
Hi-index | 0.00 |
X10 is a modern object-oriented programming language designed for high performance, high productivity programming of parallel and multi-core computer systems. Compared to the lower-level thread-based concurrency model in the JavaTM language, X10 has higher-level concurrency constructs such as async, atomic and finish built into the language to simplify creation, analysis and optimization of parallel programs. In this paper, we introduce a new algorithm for May-Happen-in-Parallel (MHP) analysis of X10 programs. The analysis algorithm is based on simple path traversals in the Program Structure Tree, and does not rely on pointer alias analysis of thread objects as in MHP analysis for Java programs. We introduce a more precise definition of the MHP relation than in past work by adding condition vectors that identify execution instances for which the MHP relation holds, instead of just returning a single true/false value for all pairs of executing instances. Further, MHP analysis is refined in our approach by using the observation that two statement instances which occur in atomic sections that execute at the same X10 place must have MHP = false. We expect that our MHP analysis algorithm will be applicable to any language that adopts the core concepts of places, async, finish, and atomic sections from the X10 programming model. We also believe that this approach offers the best of two worlds to programmers and parallel programming tools ---higher-level abstractions of concurrency coupled with simple and efficient analysis algorithms.