TY - GEN
T1 - RPL
T2 - 24th Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, PDP 2016
AU - Janjic, V.
AU - Brown, C.
AU - Mackenzie, K.
AU - Hammond, K.
AU - Danelutto, M.
AU - Aldinucci, M.
AU - Garcia, J. Daniel
PY - 2016/4/4
Y1 - 2016/4/4
N2 - Parallelising sequential applications is usually a very hard job, due to many different ways in which an application can be parallelised and a large number of programming models (each with its own advantages and disadvantages) that can be used. In this paper, we describe a method to semi-automatically generate and evaluate different parallelisations of the same application, allowing programmers to find the best parallelisation without significant manual reengineering of the code. We describe a novel, high-level domain-specific language, Refactoring Pattern Language (RPL), that is used to represent the parallel structure of an application and to capture its extra-functional properties (such as service time). We then describe a set of RPL rewrite rules that can be used to generate alternative, but semantically equivalent, parallel structures (parallelisations) of the same application. We also describe the RPL Shell that can be used to evaluate these parallelisations, in terms of the desired extra-functional properties. Finally, we describe a set of C++ refactorings, targeting OpenMP, Intel TBB and FastFlow parallel programming models, that semi-automatically apply the desired parallelisation to the application's source code, therefore giving a parallel version of the code. We demonstrate how the RPL and the refactoring rules can be used to derive efficient parallelisations of two realistic C++ use cases (Image Convolution and Ant Colony Optimisation).
AB - Parallelising sequential applications is usually a very hard job, due to many different ways in which an application can be parallelised and a large number of programming models (each with its own advantages and disadvantages) that can be used. In this paper, we describe a method to semi-automatically generate and evaluate different parallelisations of the same application, allowing programmers to find the best parallelisation without significant manual reengineering of the code. We describe a novel, high-level domain-specific language, Refactoring Pattern Language (RPL), that is used to represent the parallel structure of an application and to capture its extra-functional properties (such as service time). We then describe a set of RPL rewrite rules that can be used to generate alternative, but semantically equivalent, parallel structures (parallelisations) of the same application. We also describe the RPL Shell that can be used to evaluate these parallelisations, in terms of the desired extra-functional properties. Finally, we describe a set of C++ refactorings, targeting OpenMP, Intel TBB and FastFlow parallel programming models, that semi-automatically apply the desired parallelisation to the application's source code, therefore giving a parallel version of the code. We demonstrate how the RPL and the refactoring rules can be used to derive efficient parallelisations of two realistic C++ use cases (Image Convolution and Ant Colony Optimisation).
KW - algorithmic skeletons
KW - design patterns
KW - domain specific language
KW - parallelism
KW - performance
KW - structured parallel programming
UR - http://www.scopus.com/inward/record.url?scp=84968796844&partnerID=8YFLogxK
U2 - 10.1109/PDP.2016.122
DO - 10.1109/PDP.2016.122
M3 - Conference contribution
AN - SCOPUS:84968796844
SP - 288
EP - 295
BT - Proceedings - 24th Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, PDP 2016
A2 - Cotronis, Yiannis
A2 - Daneshtalab, Masoud
A2 - Papadopoulos, George Angelos
PB - IEEE
Y2 - 17 February 2016 through 19 February 2016
ER -