Evolutionary Auto-Tuning for Multicore Applications
Andreas Zwinkau, Victor Pankratius · Repository KITopen (Karlsruhe Institute of Technology) · 2011
Multicore processors have conquered desktops PCs, servers, and embedded platforms. Parallel computing is now available for a large spectrum of applications, many of which are nonnumerical. The increasing parallel hardware and software diversity, however, poses great challenges for programmers. They struggle with application performance optimization and have to account for many diverse and interdependent software parameters that need a proper configuration on every platform. But even if applications are adaptive, a naive approach of manually configuring application performance parameters on each platform becomes infeasible. Large search spaces and long run-times make exhaustive searches impractical, and intuitive values can miss sweet spots altogether. We tackle this important problem and present a domain-independent automatic performance tuning approach that works with a large spectrum of applications. We introduce a novel infrastructure in Eclipse that completely automates the application tuning process using evolutionary search strategies, and which is easy to use by average programmers. Our approach improves portability and works for numerical and non-numerical programs. To tune a program, a feedback-directed optimizer collects run-time information to predict parameter configurations that are likely to lead to good performance in future runs. Our technique generalizes auto-tuning to make it applicable for a variety of application-level parameters and programs in different domains. We quantify the effectiveness of various tuning strategies on a diverse set of applications and multicore platforms. We provide comparative evidence that evolutionary strategies optimize well, most notably significantly better than the simplex-based search algorithms that are predominantly used in the literature. Our insights are grounded on evidence thoroughly gathered from modelbased analyses as well as from performance analyses with real programs, including non-numerical programs. Technical Report 2011-29 Karlsruhe Institute of Technology (KIT), Germany Institute for Program Structures and Data Organization (IPD) October 4, 2011