Autotuning of OpenCL Kernels with Global Optimizations
Authors | |
---|---|
Year of publication | 2017 |
Type | Article in Proceedings |
Conference | 1st Workshop on Autotuning and Adaptivity Approaches for Energy Efficient HPC Systems (ANDARE'2017) |
MU Faculty or unit | |
Citation | |
Web | https://dl.acm.org/citation.cfm?doid=3152821.3152877 |
Doi | http://dx.doi.org/10.1145/3152821.3152877 |
Field | Informatics |
Keywords | autotuning; OpenCL; CUDA; global optimization |
Description | Autotuning is an important method for automatically exploring code optimizations. It may target low-level code optimizations, such as memory blocking, loop unrolling or memory prefetching, as well as high-level optimizations, such as placement of computation kernels on proper hardware devices, optimizing memory transfers between nodes or between accelerators and main memory. In this paper, we introduce an autotuning method, which extends state-of-the-art low-level tuning of OpenCL or CUDA kernels towards more complex optimizations. More precisely, we introduce a Kernel Tuning Toolkit (KTT), which implements inter-kernel global optimizations, allowing to tune parameters affecting multiple kernels or also the host code. We demonstrate on practical examples, that with global kernel optimizations we are able to explore tuning options that are not possible if kernels are tuned separately. Moreover, our tuning strategies can take into account numerical accuracy across multiple kernel invocations and search for implementations within specific numerical error bounds. |
Related projects: |