Kernel Tuner: A search-optimizing GPU code auto-tuner - van Werkhoven, Ben (Future generation computer systems, 2019)
A very common problem in GPU programming is that some combination of thread block dimensions and other code optimization parameters, like tiling or unrolling factors, results in dramatically better performance than other kernel configurations. To obtain highly-efficient kernels it is often required to search vast and discontinuous search spaces that consist of all possible combinations of values for all tunable parameters. This paper presents Kernel Tuner, an easy-to-use tool for testing and auto-tuning OpenCL, CUDA, and C kernels with support for many search optimization algorithms that accelerate the tuning process. This paper introduces the application of many new solvers and global optimization algorithms for auto-tuning GPU applications. We demonstrate that Kernel Tuner can be used in a wide range of application scenarios and drastically decreases the time spent tuning, e.g. tuning a GEMM kernel on AMD Vega Frontier Edition 71.2x faster than brute force search. •Introduces and evaluates optimization algorithms for auto-tuning GPU applications.•Presents Kernel Tuner, an easy-to-use tool for testing and auto-tuning GPU kernels.•Demonstrates effectiveness of Basin Hopping to speedup the auto-tuning of GPU kernels.