Task-level analysis for a language with async/finish parallelism

  • Authors:
  • Elvira Albert;Puri Arenas;Samir Genaim;Damiano Zanardini

  • Affiliations:
  • Complutense University of Madrid, Madrid, Spain;Complutense University of Madrid, Madrid, Spain;Complutense University of Madrid, Madrid, Spain;Technical University of Madrid, Madrid, Spain

  • Venue:
  • Proceedings of the 2011 SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

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.