Input-Aware Auto-Tuning for Directive-based GPU Programming
School of Informatics, University of Edinburgh, United Kingdom
6th Workshop on General Purpose Processing on Graphics Processing Units (GPGPU ’13), 2013
@inproceedings{cgo13grewe,
author={Magni, Alberto and Grewe, Dominik and Johnson, Nick},
title={Input-Aware Auto-Tuning for Directive-based GPU Programming},
booktitle={GPGPU ’13: Proceedings of the 6th Workshop on General Purpose Processing on Graphics Processing Units},
year={2013},
publisher={ACM}
}
The difficulties posed by GPGPU programming and the need to increase productivity have guided research towards directive-based high-level programs for accelerators. This effort has led to the definition of the OpenACC industry standard. It significantly simplifies writing code for graphics engines leaving the programmer the opportunity to tune the application for the target hardware and input. In this paper we address the problem of choosing the best mapping of sequential OpenACC loops to the parallel thread-space for a given program and input size. We show that auto-tuning on mapping parameters can improve performance by up to 4.8x over the default chosen by a state-of-the-art compiler. To reduce the overhead of auto-tuning we introduce a search technique that exploits similarities in behaviour across inputs using a nearest neighbour approach. This dramatically reduces the search for a good mapping (by 97% compared to random search). Finally we propose a heuristic for stopping the focused search which, averaged across 12 benchmarks and 30 input sizes each, achieves a speedup over the default of 1.26x with only 8 sampling runs.
March 15, 2013 by hgpu