Abstract

This paper presents a new technique for introducing and tuning parallelism for heterogeneous shared-memory systems (comprising a mixture of CPUs and GPUs), using a combination of algorithmic skeletons (such as farms and pipelines), Monte–Carlo tree search for deriving mappings of tasks to available hardware resources, and refactoring tool support for applying the patterns and mappings in an easy and effective way. Using our approach, we demonstrate easily obtainable, significant and scalable speedups on a number of case studies showing speedups of up to 41 over the sequential code on a 24-core machine with one GPU. We also demonstrate that the speedups obtained by mappings derived by the MCTS algorithm are within 5–15% of the best-obtained manual parallelisation.

Highlights

  • We introduce a new technique for programming heterogeneous parallel systems that: (1) automatically discovers which parallel structure to exploit; (2) computes a near-optimal mapping of work onto the various heterogeneous processing elements; and, (3) provides a semi-automatic way of introducing the chosen parallel structure into the original program, and instantiating this with the derived mapping information

  • We show the generality of our technique by using realistic use-cases from three different domains, programmed using the FastFlow [3] skeleton library for C++, which uses OpenCL and CUDA for GPU computations

  • The paper makes the following research contributions: 1. we introduce a new technique for building heterogeneous parallel programs semiautomatically, based on refactoring and algorithmic skeletons; 2. we introduce a mechanism for discovering efficient mappings of parallel application threads to heterogeneous CPU and GPU hardware, based on Monte–Carlo Tree Search simulations; and, 3. we show that, using our technique, it is possible to derive a parallel structure and the corresponding mapping information, achieving performance that can be within 5% of the best-obtained manual parallelisation

Read more

Summary

Introduction

We introduce a new technique for programming heterogeneous parallel systems that: (1) automatically discovers which parallel structure to exploit; (2) computes a near-optimal mapping of work onto the various heterogeneous processing elements; and, (3) provides a semi-automatic way of introducing the chosen parallel structure into the original program, and instantiating this with the derived mapping information. Our technique is based on a combination of algorithmic skeletons [11] for defining the parallel structure, a method of finding a mapping for tasks on heterogeneous architectures and refactoring tool support for user-guided introduction of the skeletons and mapping decisions. We introduce a new technique for building heterogeneous parallel programs semiautomatically, based on refactoring and algorithmic skeletons; 2. The paper makes the following research contributions: 1. we introduce a new technique for building heterogeneous parallel programs semiautomatically, based on refactoring and algorithmic skeletons; 2. we introduce a mechanism for discovering efficient mappings of parallel application threads to heterogeneous CPU and GPU hardware, based on Monte–Carlo Tree Search simulations; and, 3. we show that, using our technique, it is possible to derive a parallel structure and the corresponding mapping information, achieving performance that can be within 5% of the best-obtained manual parallelisation

Skeletons
Refactoring
Programming Heterogeneous Parallel Machines
Deriving Mappings Using Monte Carlo Tree Search
Adaptation of the MCTS Technique to the Static Mapping Problem
MCTS parameters
Case Studies
Image Convolution
Configurations and Cost‐Model Filtering
Optimal Static Mappings Determined by MCTS
Evaluation of Skeleton Configurations
Ant Colony Optimisation
Molecular Dynamics
Related Work
Conclusions and Future Work
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.