Abstract

Automatic tuning (auto-tuning) of software has emerged in recent years as a promising method that tries to automatically adapt the behaviour of a program to attain different performance objectives on a given computing system. This method is gaining momentum due to the increasing complexity of modern multicore-based hardware architectures. Many solutions to auto-tuning have been explored ranging from simple random search to more sophisticate methods like machine learning or evolutionary search. To this day, it is still unclear whether these approaches are general enough to encompass all the complexities of the problem (e.g. search space, parameters influencing the search space, input data sensitivity, etc.), or which approach is best suited for a given problem. Furthermore, the growing interest in auto-tuning a program for several objectives is increasing this confusion even further. The goal of this paper is to formally describe the problem addressed by auto-tuning programs and review existing solutions highlighting the advantages and drawbacks of different techniques for single-objective as well as multi-objective auto-tuning approaches.

Highlights

  • Over the last decade we have observed major changes in computing systems [11]

  • In order to examine multi-objective auto-tuners we have considered a genetic algorithm known as NSGA-II [10], and RS-GDE3 a differential evolution method endowed with a mechanism to effectively prune the search space

  • Regarding the experiments conducted with singleobjective auto-tuners, we found out that the local search and simulated annealing approach derived solutions with larger execution time than the ones computed by the multi-objective approaches

Read more

Summary

Introduction

The penetration of multi- and many-core processors in all segments of the computing market has implied a programming paradigm shift from serial to parallel computing. The dominance of desktops, laptops and server PCs has faded and has been replaced by new computing systems of smart embedded systems, mobile devices and Cloud infrastructures. Cyber physical systems are becoming more and more popular, where data can be gathered, for instance, from users or embedded systems, processed on Cloud computers, and results are delivered to users through their mobile devices. As a consequence of this wide spectrum of different computing systems, optimizing an application for performance has become a challenging task. Applications optimized for one computing system may not be optimal for another, optimization of programs commonly has to be repeated for every computing sys-

Objectives
Methods
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call