Towards a Tunable Multi-Backend Skeleton Programming Framework for Multi-GPU Systems
Dept. of Computer and Information Science, Linkoping University
Third Swedish Workshop on Multicore Computing (MCC-2010), 2010
@article{enmyren2010towards,
title={Towards a Tunable Multi-Backend Skeleton Programming Framework for Multi-GPU Systems},
author={Enmyren, Johan and Dastgeer, Usman and Kessler, Christoph W.},
year={2010}
}
SkePU is a C++ template library that provides a simple and unified interface for specifying data-parallel computations with the help of skeletons on GPUs using CUDA and OpenCL. The interface is also general enough to support other architectures, and SkePU implements both a sequential CPU and a parallel OpenMP backend. It also supports multi-GPU systems. Currently available skeletons in SkePU include map, reduce, mapreduce, map-with-overlap, map-array, and scan. The performance of SkePU generated code is comparable to that of hand-written code, even for more complex applications such as ODE solving. In this paper, we describe how to make SkePU tunable, by adding the mechanism of execution plans that can configure a skeleton so that, at run time, the predicted best suitable resource and platform is chosen automatically, depending on operand data sizes. We also discuss how the approach can be extended to provide a fully auto-tunable skeleton programming system, which is a work in progress.
January 30, 2012 by hgpu