ACM SIGPLAN Notices
Optimized Live Heap Bound Analysis
VMCAI 2003 Proceedings of the 4th International Conference on Verification, Model Checking, and Abstract Interpretation
Soot - a Java bytecode optimization framework
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
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
Concurrent clustered programming
CONCUR 2005 - Concurrency Theory
Field-sensitive value analysis of embedded C programs with union types and pointer arithmetics
Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
Parametric prediction of heap memory requirements
Proceedings of the 7th international symposium on Memory management
Analysing memory resource bounds for low-level programs
Proceedings of the 7th international symposium on Memory management
A model of cooperative threads
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SPEED: precise and efficient static estimation of program computational complexity
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
COSTA: Design and Implementation of a Cost and Termination Analyzer for Java Bytecode
Formal Methods for Components and Objects
Parametric heap usage analysis for functional programs
Proceedings of the 2009 international symposium on Memory management
Featherweight X10: a core calculus for async-finish parallelism
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
A termination analyzer for Java bytecode based on path-length
ACM Transactions on Programming Languages and Systems (TOPLAS)
Cost analysis of java bytecode
ESOP'07 Proceedings of the 16th European conference on Programming
Parametric inference of memory requirements for garbage collected languages
Proceedings of the 2010 international symposium on Memory management
Static verification for code contracts
SAS'10 Proceedings of the 17th international conference on Static analysis
Automatic verification of determinism for structured parallel programs
SAS'10 Proceedings of the 17th international conference on Static analysis
Closed-Form Upper Bounds in Static Cost Analysis
Journal of Automated Reasoning
Efficient data race detection for async-finish parallelism
RV'10 Proceedings of the First international conference on Runtime verification
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Type-Based amortised heap-space analysis
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
A new algorithm for identifying loops in decompilation
SAS'07 Proceedings of the 14th international conference on Static Analysis
Simulating concurrent behaviors with worst-case cost bounds
FM'11 Proceedings of the 17th international conference on Formal methods
Cost analysis of object-oriented bytecode programs
Theoretical Computer Science
Incremental resource usage analysis
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Cost analysis of concurrent OO programs
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Automatic inference of resource consumption bounds
LPAR'12 Proceedings of the 18th international conference on Logic for Programming, Artificial Intelligence, and Reasoning
On the Inference of Resource Usage Upper and Lower Bounds
ACM Transactions on Computational Logic (TOCL)
Hi-index | 0.00 |
The task level of a program is the maximum number of tasks that can be available (i.e., not finished nor suspended) simultaneously during its execution for any input data. Static knowledge of the task level is of utmost importance for understanding and debugging parallel programs as well as for guiding task schedulers. We present, to the best of our knowledge, the first static analysis which infers safe and precise approximations on the task level for a language with async-finish parallelism. In parallel languages, async and finish are basic constructs for, respectively, spawning tasks and waiting until they terminate. They are the core of modern, parallel, distributed languages like X10. Given a (parallel) program, our analysis returns a task-level upper bound, i.e., a function on the program's input arguments that guarantees that the task level of the program will never exceed its value along any execution. Our analysis provides a series of useful (over)-approximations, going from the total number of tasks spawned in the execution up to an accurate estimation of the task level.