PSkel: A stencil programming framework for CPU‐GPU systems
- 15 April 2015
- journal article
- research article
- Published by Wiley in Concurrency and Computation: Practice and Experience
- Vol. 27 (17) , 4938-4953
Abstract
Summary: The use of Graphics Processing Units (GPUs) for high‐performance computing has gained growing momentum in recent years. Unfortunately, GPU‐programming platforms like Compute Unified Device Architecture (CUDA) are complex, user unfriendly, and increase the complexity of developing high‐performance parallel applications. In addition, runtime systems that execute those applications often fail to fully utilize the parallelism of modern CPU‐GPU systems. Typically, parallel kernels run entirely on the most powerful device available, leaving other devices idle. These observations sparked research in two directions: (1) high‐level approaches to software development for GPUs, which strike a balance between performance and ease of programming; and (2) task partitioning to fully utilize the available devices. In this paper, we propose a framework, called PSkel, that provides a single high‐level abstraction for stencil programming on heterogeneous CPU‐GPU systems, while allowing the programmer to partition and assign data and computation to both CPU and GPU. Our current implementation uses parallel skeletons to transparently leverage Intel Threading Building Blocks (Intel Corporation, Santa Clara, CA, USA) and NVIDIA CUDA (Nvidia Corporation, Santa Clara, CA, USA). In our experiments, we observed that parallel applications with task partitioning can improve average performance by up to 76% and 28% compared with CPU‐only and GPU‐only parallel applications, respectively. Copyright © 2015 John Wiley & Sons, Ltd.Keywords
Funding Information
- Fundação de Amparo à Pesquisa do Estado de São Paulo (2013/05275-0)
- Conselho Nacional de Desenvolvimento Científico e Tecnológico (149533/2013-6)
This publication has 22 references indexed in Scilit:
- PARTANSACM Transactions on Architecture and Code Optimization, 2013
- High-performance code generation for stencil computations on GPU architectures2012
- Workload Balancing on Heterogeneous Systems: A Case Study of Sparse Grid InterpolationLecture Notes in Computer Science, 2012
- Physis2011
- Optimizing dataflow applications on heterogeneous environmentsCluster Computing, 2011
- A Static Task Partitioning Approach for Heterogeneous Systems Using OpenCL2011
- HPCCD: Hybrid Parallel Continuous Collision Detection using CPUs and GPUsComputer Graphics Forum, 2009
- Zippy: A Framework for Computation and Visualization on a GPU ClusterComputer Graphics Forum, 2008
- Machine Learning for High-Speed Corner Detection2006
- Mathematical GamesScientific American, 1970