Accelerator: using data parallelism to program GPUs for general-purpose uses
Microsoft Research
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems, Volume 40, Issue 5, (2006)
@conference{tarditi2006accelerator,
title={Accelerator: using data parallelism to program GPUs for general-purpose uses},
author={Tarditi, D. and Puri, S. and Oglesby, J.},
booktitle={Proceedings of the 12th international conference on Architectural support for programming languages and operating systems},
pages={325–335},
isbn={1595934510},
year={2006},
organization={ACM}
}
GPUs are difficult to program for general-purpose uses. Programmers can either learn graphics APIs and convert their applications to use graphics pipeline operations or they can use stream programming abstractions of GPUs. We describe Accelerator, a system that uses data parallelism to program GPUs for general-purpose uses instead. Programmers use a conventional imperative programming language and a library that provides only high-level data-parallel operations. No aspects of GPUs are exposed to programmers. The library implementation compiles the data-parallel operations on the fly to optimized GPU pixel shader code and API calls.We describe the compilation techniques used to do this. We evaluate the effectiveness of using data parallelism to program GPUs by providing results for a set of compute-intensive benchmarks. We compare the performance of Accelerator versions of the benchmarks against hand-written pixel shaders. The speeds of the Accelerator versions are typically within 50% of the speeds of hand-written pixel shader code. Some benchmarks significantly outperform C versions on a CPU: they are up to 18 times faster than C code running on a CPU.
November 5, 2010 by hgpu