The Future of Accelerator Programming: Abstraction, Performance or Can We Have Both?
IBM Almaden Research Center, 650 Harry Road, San Jose, CA 95120, United States
29th ACM Symposium On Applied Computing (ACM SAC 2014), 2014
@article{rocki2014future,
title={The Future of Accelerator Programming: Abstraction, Performance or Can We Have Both?},
author={Rocki, Kamil and Burtscher, Martin and Suda, Reiji},
year={2014}
}
Recently, parallel programming has become necessary in order to obtain performance gains, primarily due to power limitations. However parallel architectures differ substantially from each other, often require specialized knowledge, and typically necessitate reimplementation and fine tuning of application code. These slow tasks frequently result in situations where most of the time is spent reimplementing old rather than writing new code. The goal of our research is to find new programming techniques that would increase productivity, maintain high performance, and provide abstraction to free the programmer from these unnecessary and time-consuming tasks. Such techniques usually come at the cost of substantial performance degradation. This paper discusses OpenCL as a potential solution and presents three approaches of writing portable code: GPU-centric, CPU-centric and combined. By applying the three approaches to a real-world program, we show that it is at least sometimes possible to run exactly the same code on many different devices with minimal performance degradation using parameterization. The main contribution of this paper is our original approach of addressing this problem with a generalized excessive-parallelism approach.
November 28, 2013 by hgpu