Exploring Parallel Programming Models for Heterogeneous Computing Systems

Published in 2015 IEEE International Symposium on Workload Characterization, 2015

Recommended citation: Daga, Mayank, Zachary S. Tschirhart, and Chip Freitag. "Exploring parallel programming models for heterogeneous computing systems." 2015 IEEE International Symposium on Workload Characterization. IEEE, 2015. https://ieeexplore.ieee.org/abstract/document/7314151

Parallel systems that employ CPUs and GPUs as two heterogeneous computational units have become immensely popular due to their ability to maximize performance under restrictive thermal budgets. However, programming heterogeneous systems via traditional programming models like OpenCL or CUDA involves rewriting large portions of application-code. They also lead to code that is not performance portable across different architectures or even across different generations of the same architecture. In this paper, we evaluate the current state of two emerging parallel programming models: C++ AMP and OpenACC. These emerging programming paradigms require minimal code changes and rely on compilers to interact with the low-level hardware language, thereby producing performance portable code from an application standpoint. We analyze the performance and productivity of the emerging programming models and compare them with OpenCL using a diverse set of applications on two different architectures, a CPU coupled with a discrete GPU and an Accelerated Programming Unit (APU). Our experiments demonstrate that while the emerging programming models improve programmer productivity, they do not yet expose enough flexibility to extract maximum performance as compared to traditional programming models.

Download pre-print paper here

Download published paper