Benchmarking optimization algorithms for auto-tuning GPU kernels
arXiv:2210.01465 · doi:10.1109/TEVC.2022.3210654
Abstract
Recent years have witnessed phenomenal growth in the application, and capabilities of Graphical Processing Units (GPUs) due to their high parallel computation power at relatively low cost. However, writing a computationally efficient GPU program (kernel) is challenging, and generally only certain specific kernel configurations lead to significant increases in performance. Auto-tuning is the process of automatically optimizing software for highly-efficient execution on a target hardware platform. Auto-tuning is particularly useful for GPU programming, as a single kernel requires re-tuning after code changes, for different input data, and for different architectures. However, the discrete, and non-convex nature of the search space creates a challenging optimization problem. In this work, we investigate which algorithm produces the fastest kernels if the time-budget for the tuning task is varied. We conduct a survey by performing experiments on 26 different kernel spaces, from 9 different GPUs, for 16 different evolutionary black-box optimization algorithms. We then analyze these results and introduce a novel metric based on the PageRank centrality concept as a tool for gaining insight into the difficulty of the optimization problem. We demonstrate that our metric correlates strongly with observed tuning performance.
arXiv commentin IEEE Transactions on Evolutionary Computation, 2022
References in corpus (9)
- Global Optimization by Basin-Hopping and the Lowest Energy Structures of Lennard-Jones Clusters Containing up to 110 Atoms
- Generalized Simulated Annealing
- A Survey on Compiler Autotuning using Machine Learning
- A Study of NK Landscapes' Basins and Local Optima Networks
- NATS-Bench: Benchmarking NAS Algorithms for Architecture Topology and Size
- CLTune: A Generic Auto-Tuner for OpenCL Kernels
- CLBlast: A Tuned OpenCL BLAS Library
- A Benchmark Set of Highly-efficient CUDA and OpenCL Kernels and its Dynamic Autotuning with Kernel Tuning Toolkit
- Auto-Tuning Dedispersion for Many-Core Accelerators