Parallel Program Shaping

Software development approaches are not keeping pace with the current trends towards increasingly parallel multi-core/many-core hardware. Most applications programmers are not experts in parallellism, so knowing when and where to effectively deploy parallelism can seem ad-hoc or even impossible. Parallel patterns are high-level entities that abstract away the tedious and complex low-level parallelism code. Like higher-order functions, the idea is for the programmer to insert simple calls to the relevant parallel pattern in the application, rather than introduce the complex low level parallelism code.

However, most applications are not in the desired shape to introduce these refactorings easily. Instead, some restructuring of the source code is required. These restructuring steps include, removing dependencies, global variables, locking, side effects, etc.

Refactoring, the process of restructuring a program without changing its functional semantics, has been around since the 1970s. However, with the emergence of refactoring tools for parallelism, refactoring can massively decrease the burden of writing parallel programs.

The objective of this project is to implement a program shaping refactoring tool for C++ built into Eclipse. This program shaping tool will refactor C++ programs to allow the parallel patterns to be introduced easily.

Supervisors

Artefact(s)

The main artefacts are a design, implementation and evaluation.

Background

Agricultural Reform: More Efficient Farming Using Advanced Parallel Refactoring Tools http://ieeexplore. ieee.org/stamp/stamp.jsp?arnumber=6787250


Cost-Directed Refactoring for Parallel Erlang Programs http://link.springer.com/article/10.1007% 2Fs10766-013-0266-5

Discovering Parallel Pattern Candidates in Erlang http://dl.acm.org/citation.cfm?id=2633453 http://rephrase-ict.eu/ http://www.paraphrase-ict.eu/