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.