Meta-Programming and Auto-Tuning in the Search for High Performance GPU Code
Indiana University
Indiana University, 2015
@article{vollmer2015meta,
title={Meta-Programming and Auto-Tuning in the Search for High Performance GPU Code},
author={Vollmer, Michael and Svensson, Bo Joel and Holk, Eric and Newton, Ryan},
year={2015}
}
Writing high performance GPGPU code is often difficult and time-consuming, potentially requiring laborious manual tuning of low-level details. Despite these challenges, the cost in ignoring GPUs in high performance computing is increasingly large. Auto-tuning is a potential solution to the problem of tedious manual tuning. We present a framework for auto-tuning GPU kernels which are expressed in an embedded DSL, and which expose compile-time parameters for tuning. Our framework allows for kernels to be polymorphic over what search strategy will tune them, and allows search strategies to be implemented in the same metalanguage as the kernel-generation code (Haskell). Further, we show how to use functional programming abstractions to enforce regular (hyper-rectangular) search spaces. We also evaluate several common search strategies on a variety of kernels, and demonstrate that the framework can tune both EDSL and ordinary CUDA code.
June 7, 2015 by hgpu