Paragon: Collaborative Speculative Loop Execution on GPU and CPU
Advanced Computer Architecture Laboratory, University of Michigan – Ann Arbor, MI
Fifth Workshop on General-Purpose Computation on Graphics Processing Units (GPGPU), 2012
@article{samadi2012paragon,
title={Paragon: Collaborative Speculative Loop Execution on GPU and CPU},
author={Samadi, M. and Hormati, A. and Lee, J. and Mahlke, S.},
year={2012}
}
The rise of graphics engines as one of the main parallel platforms for general purpose computing has ignited a wide search for better programming support for GPUs. Due to their non-traditional execution model, developing applications for GPUs is usually very challenging, and as a result, these devices are left under-utilized in many commodity systems. Several languages, such as CUDA, have emerged to solve this challenge, but past research has shown that developing applications in these languages is a daunting task because of the tedious performance optimization cycle or inherent algorithmic characteristics of an application, which could make it unsuitable for GPUs. Also, previous approaches of automatically generating optimized parallel code in CUDA for GPUs using complex compilation techniques have failed to utilize GPUs that are present in everyday computing devices such as laptops and mobile systems. In this work, we take a different approach. Although it is hard to generate optimized code for GPU, it is beneficial to utilize them speculatively rather than leaving them running idle due to their high raw performance capabilities compared to CPUs. To achieve this goal, we propose Paragon: a collaborative static/dynamic compiler platform to speculatively run possibly-data-parallel pieces of sequential applications on GPUs. Paragon utilizes the GPU in an opportunistic way for loops that are categorized as possibly-dataparallel by its loop classification phase. While running the loop speculatively, Paragon monitors the dependencies using a lightweight kernel management unit, and transfers the execution to the CPU in case a conflict is detected. Paragon resumes the execution on the GPU after the dependency is executed sequentially on the CPU. Our experiments show that Paragon achieves up to 12x speedup compared to unsafe CPU execution with 4 threads.
March 8, 2012 by hgpu