Aims & Approach

The ParaPhrase project aims to produce a new structured design and implementation process for heterogeneous parallel architectures, where developers exploit a variety of parallel patterns to develop component based applications that can be mapped to the available hardware resources, and which may then be dynamically re-mapped to meet application needs and hardware availability.

ParaPhrase–Enlarged will improve the applicability of the ParaPhrase approach by providing support for the automatic discovery and introduction of high level parallel patterns. Existing software could be analysed and, in many cases, automatically refactored with a tool which can find instances of program constructs that are eligible for replacement with some high-level pattern. Other ParaPhrase tools can then benefit from the introduced patterns when deploying the components of the software to some given hardware configuration.

Aims

Pattern discovery and transformation

We shall design analyses for the identification of pattern candidates, that is program components that could be, and are worth to be, restructured into applications of high-level parallel patterns. We shall also define the transformations for introducing the high-level patterns.

Refactoring tools for parallel patterns

ParaPhrase develops refactoring tools that support the parallel design process by allowing the straightforward inclusion of alternative parallelisations for the same software design. In ParaPhrase-Enlarged we add analyses and transformations to shape programs for introduction of alternative parallel implementations.

Application-Based Validation

We shall validate the ParaPhrase-Enlarged approach using a representative set of industrially-derived high-performance applications.

Approach

Due to the traditional, sequential view of program execution that many programmers have, legacy code is often written in a style that hinders effective parallelization. This is an obstacle for deploying existing software or components on the multi- and manycore hardware of the near future. By restructuring the code it might be possible to eliminate unnecessary dependencies in the control flow, and thus make the code eligible for parallelisation. If we replace certain sequentially designed constructs with applications of high-level patterns, we can exploit parallelism and, at the same time, enable the flexible mapping of components to hardware elements offered by the ParaPhrase approach. Program transformations for the introduction of patterns are hard to carry out manually. Software development tools can facilitate the identification of pattern candidates, as well as the realization of the transformations. In order to create such a tool, we shall characterize the program structures that are amenable for the transformations, design analyses that are able to find these structures in a body of program code, and define the transformations that replace these structures with the corresponding pattern. Achieving this objective will allow us to improve programmability of multicore systems by facilitating parallelization of existing components, libraries and other program units.

In order to validate our methodology of pattern discovery and introduction, we plan to use the set of industrially-derived applications identified by the ParaPhrase project. These applications are from the data analysis, machine learning and weather prediction domains. They demonstrate good multi-core performance and expose opportunities for heterogeneity. We will evaluate the capabilities of automatic pattern discovery and introduction by comparing transformations carried out by the automated refactoring techniques to those carried out manually by programmers.