Approximate Oracles and Synergy in Software Energy Search Spaces

@article{Bruce2019ApproximateOA,
  title={Approximate Oracles and Synergy in Software Energy Search Spaces},
  author={Bobby R. Bruce and Justyna Petke and Mark Harman and Earl T. Barr},
  journal={IEEE Transactions on Software Engineering},
  year={2019},
  volume={45},
  pages={1150-1169}
}
Reducing the energy consumption of software systems through optimisation techniques such as genetic improvement is gaining interest. However, efficient and effective improvement of software systems requires a better understanding of the code-change search space. One important choice practitioners have is whether to preserve the system's original output or permit approximation, with each scenario having its own search space characteristics. When output preservation is a hard constraint, we… 
Towards rigorous validation of energy optimisation experiments
TLDR
This paper proposes a new validation approach called R3-validation which exercises software variants in a rotated-round-robin order and shows that it aligns best with actual platform behaviour.
Enhancing Genetic Improvement of Software with Regression Test Selection
TLDR
The results of the empirical evaluation show that incorporation of RTS within GI significantly speeds up the whole GI process, making it up to 78% faster on the authors' benchmark set, being still able to produce valid software improvements.
Evaluation of genetic improvement tools for improvement of non-functional properties of software
TLDR
Survey and report on the existing GI tools for improvement of non-functional properties of software, and finds that ultimately only two ---Gin and PyGGI--- can be readily applied to new general software.
Genetic improvement of software efficiency: the curse of fitness estimation
TLDR
Some of the challenges in computing such fitness functions are illustrated and a synergy between in-vivo evaluation and machine learning approaches to overcome such issues are proposed.
Genetic Improvement of GPU Code
TLDR
GEVO (Gpu EVOlution), a tool for automatically tuning the performance of GPU kernels in the LLVM representation to meet desired criteria, uses population-based search to find edits to programs compiled to LLVM-IR that improve performance on desired criteria and retain required functionality.
Genetic improvement of software: from program landscapes to the automatic improvement of a live system
TLDR
It is shown that software is generally not fragile and although fitness landscapes for GI are flat they are not impossible to search in, and this conclusion applies equally to bug fixing in small programs as well as execution time improvements.
Search-Based Software Engineering: 12th International Symposium, SSBSE 2020, Bari, Italy, October 7–8, 2020, Proceedings
TLDR
An empirical study that compares CPS model testing and verification, a search-based testing approach for compute-intensive CPS models that builds on a wellknown formal verification framework, and a technique to automatically generate formal environment assumptions for CPS models using search algorithms and genetic programming are presented.
A survey of genetic improvement search spaces
TLDR
This paper summarises the work published on why genetic programming has been the most commonly applied search algorithm in GI and explores GI's mutation search space.
GEVO: GPU Code Optimization using Evolutionary Computation
TLDR
GEVO (Gpu optimization using EVOlutionary computation) is a tool for automatically discovering optimization opportunities and tuning the performance of GPU kernels in the LLVM representation and improves performance on desired criteria while retaining required functionality.
Mind the gap – a distributed framework for enabling energy optimisation on modern smart-phones in the presence of noise, drift, and statistical insignificance
TLDR
This work presents a conceptual framework based on tournaments which is used to compare a range of test workloads on different combinations of phones and operating systems, and quantifies the number of trials required to resolve different variants to different levels of fidelity on arange of platforms.
...
...

References

SHOWING 1-10 OF 74 REFERENCES
SEEDS: a software engineer's energy-optimization decision support framework
TLDR
This paper describes the first known automated support for systematically optimizing the energy usage of applications by making code-level changes, and presents a general framework, SEEDS, as well as an instantiation of the framework that automatically optimizes Java applications by selecting the most energy-efficient library implementations for Java's Collections API.
Representations and operators for improving evolutionary software repair
TLDR
This paper investigates representation and operator choices for source-level evolutionary program repair in the GenProg framework, focusing on: representation of individual variants, crossover design, mutation operators, and search space definition.
The GISMOE challenge: constructing the pareto program surface using genetic programming to find better programs (keynote paper)
TLDR
An alternate vision for a new kind of software development environment inspired by recent results from Search Based Software Engineering is set out, freeing the designer to explore, to understand, to control and to decide rather than to construct.
Fast searches for effective optimization phase sequences
TLDR
This paper describes two complementary general approaches for achieving faster searches for effective optimization sequences when using a genetic algorithm, and modifies the search so fewer generations are required to achieve the same results.
Genetic Improvement of Software: A Comprehensive Survey
TLDR
A comprehensive survey of this nascent field of research with a focus on the core papers in the area published between 1995 and 2015, identifying core publications including empirical studies, 96% of which use evolutionary algorithms (genetic programming in particular).
Post-compiler software optimization for reducing energy
TLDR
Genetic Optimization Algorithm (GOA), which targets measurable non-functional aspects of software execution in programs that compile to x86 assembly, and shows average energy reductions of 20%, both for a large AMD system and a small Intel system, while maintaining program functionality on target workloads.
Evolutionary Improvement of Programs
TLDR
This paper proposes a new approach that applies GP to improve existing software by optimizing its non-functional properties such as execution time, memory usage, or power consumption and discusses how best to combine and extend the existing evolutionary methods of GP, multiobjective optimization, and coevolution in order to improved existing software.
A genetic programming approach to automated software repair
TLDR
The paper describes the method, reviews earlier experiments that repaired 11 bugs in over 60,000 lines of code, reports results on new bug repairs, and describes experiments that analyze the performance and efficacy of the evolutionary components of the algorithm.
Auto-tuning for Energy Usage in Scientific Applications
TLDR
This work uses existing software and hardware facilities to tune applications to minimize for several combinations of power and performance and tunable parameters are explored via an offline search to find the parameter combinations that are optimal with respect to performance.
Search Based Software Engineering
TLDR
This keynote address surveys recent success and momentum in the subfield of automated program repair and argues for the importance of human studies in automated software engineering and challenges the SBSE community to facilitate reproducible research and scientific advancement through benchmark creation.
...
...