next up previous
Next: Baseline Up: Project Overview and Rationale Previous: Potential

Brief Summary of Progress and Results

Results so far in automatic parallelization include progress in partitioning programs into independent processes and aggregating these processes to achieve appropriate grain size. New, more lax notions of dependency have been defined. The related analysis and transformation frameworks have been developed and implemented, resulting in a set of integrated tools for dependency analysis, producer/consumer determination, granularity control, process graph shape modification, etc. These tools combine several abstract domains, task cost analyses, and parallelization techniques and can now support full, practical languages. Significant progress has also been made in supporting large programs through incremental compilation. Techniques have been developed for supporting data-parallelism in conjunction with control parallelism. The resulting system has been shown to automatically achieve significant speedups over state of the art sequential systems.

In the context of analysis of concurrent programs current results include an analysis deriving definite and possible ordering information and a compilation technique which translates a program into threads. Also, a method for analyzing concurrent programs with deep guards has been implemented in such a language (AKL from SICS, recently renamed to ``AGENTS''). A denotational semantics which allows accurate analysis of programs with delayed, suspended atoms, has been proposed. A denotational semantics which allows accurate analysis of programs with delayed, suspended atoms, has been proposed. The subset of concurrent programs which are confluent (in the sense that different process schedulings lead to the same possible outcomes) has been investigated. Confluence [31] is an important and desirable property as it allows the program to be understood by considering any desired scheduling rule, rather than having to consider all possible schedulings. Moreover, a simple closure-based denotational semantics has been defined for confluent concurrent programs. These results are particularly relevant for program analysis: an arbitrary concurrent program is first approximated by a confluent program which can be analyzed in a simpler and compositional way [30].

In the context of parallel program development a declarative debugger for the Gödel programming language and a visualizer for a number of parallelism paradigms have been developed. Several techniques for parallel programming have been studied, including parallel branch-and-bound for CLP, and partial evaluation for or-parallel and concurrent (AKL) programs.

Finally, common syntax and interfaces have been designed in order to allow interoperability and assessment of the tools. Currently, the results of the ongoing assessment task points to significant improvements of the parallel execution of programs with the new techniques.


next up previous
Next: Baseline Up: Project Overview and Rationale Previous: Potential

<webmaster@clip.dia.fi.upm.es> Last Modified: Fri May 9 18:15:08 MET DST 1997