Simultaneous CPU–GPU Execution of Data Parallel Algorithmic Skeletons

Wrede Fabian, Ernsting Steffen


Abstract
Parallel programming has become ubiquitous; however, it is still a low-level and error-prone task, especially when accelerators such as GPUs are used. Thus, algorithmic skeletons have been proposed to provide well-defined programming patterns in order to assist programmers and shield them from low-level aspects. As the complexity of problems, and consequently the need for computing capacity, grows, we have directed our research toward simultaneous CPU-GPU execution of data parallel skeletons to achieve a performance gain. GPUs are optimized with respect to throughput and designed for massively parallel computations. Nevertheless, we analyze whether the additional utilization of the CPU for data parallel skeletons in the Muenster Skeleton Library leads to speedups or causes a reduced performance, because of the smaller computational capacity of CPUs compared to GPUs. We present a C++ implementation based on a static distribution approach. In order to evaluate the implementation, four different benchmarks, including matrix multiplication, N-body simulation, Frobenius norm, and ray tracing, have been conducted. The ratio of CPU and GPU execution has been varied manually to observe the effects of different distributions. The results show that a speedup can be achieved by distributing the execution among CPUs and GPUs. However, both the results and the optimal distribution highly depend on the available hardware and the specific algorithm.

Keywords
High-level parallel programming; Data parallel algorithmic skeletons; Simultaneous CPU–GPU execution



Publication type
Research article (journal)

Peer reviewed
Yes

Publication status
Published

Year
2018

Journal
International Journal of Parallel Programming

Volume
46

Issue
1

Start page
42

End page
61

Language
English

ISSN
0885-7458

DOI

Full text