Leo: A Profile-Driven Dynamic Optimization Framework for GPU Applications
Georgia Institute of Technology
2014 Conference on Timely Results in Operating Systems, 2014
@article{farooqui2014leo,
title={Leo: A Profile-Driven Dynamic Optimization Framework for GPU Applications},
author={Farooqui, Naila and Rossbach, Christopher J and Yu, Yuan and Schwan, Karsten},
year={2014}
}
Parallel architectures like GPUs are a tantalizing compute fabric for performance-hungry developers. While GPUs enable order-of-magnitude performance increases in many data-parallel application domains, writing efficient codes that can actually manifest those increases is a non-trivial endeavor, typically requiring developers to exercise specialized architectural features exposed directly in the programming model. Achieving good performance on GPUs involves effort-intensive tuning, typically requiring the programmer to manually evaluate multiple code versions in search of an optimal combination of problem decomposition with architecture- and runtime-specific parameters. For developers struggling to apply GPUs to more general-purpose computing problems, the introduction of irregular data structures and access patterns serves only to exacerbate these challenges, and only increases the level of effort required. This paper proposes to automate much of this effort using dynamic instrumentation to inform dynamic, profile-driven optimizations. In this vision, the programmer expresses the application using higher-level frontend programming abstractions such as Dandelion [18], allowing the system, rather than the programmer, to explore the implementation and optimization space. We argue that such a system is both feasible and urgently needed. We present the design for such a framework, called Leo. For a range of benchmarks, we demonstrate that a system implementing our design can achieve from 1.12 to 27x speedup in kernel runtimes, which translates to 7-40% improvement for end-to-end performance.
October 11, 2014 by hgpu