Automatic configuration of GCC using irace: Supplementary material

by Leslie Pérez Cáceres, Federico Pagnozzi, Alberto Franzin, Thomas Stützle

Table of Contents
  1. Abstract
  2. Scenarios

1. Abstract:

Automatic algorithm configuration techniques have proved to be successful in finding performance-optimizing parameter settings of many search-based decision and optimization algorithms. A recurrent, important step in software development is the compilation of source code written in some programming language into machine-executable code. The generation of performance-optimized machine code itself is a difficult task that can be parametrized in many different possible ways. While modern compilers usually offer different levels of optimization as possible defaults, they have a larger number of other flags and numerical parameters that impact properties of the generated machine-code. While the generation of performance-optimized machine code has received large attention and is dealt with in the research area of auto-tuning, the usage of standard automatic algorithm configuration software has not been explored, even though, as we show in this article, the performance of the compiled code has significant stochasticity, just as standard optimization algorithms. As a practical case study, we consider the configuration of the well-known GNU compiler collection (GCC) for minimizing the run-time of machine code for various heuristic search methods. Our experimental results show that, depending on the specific code to be optimized, improvements of up to 40% of execution time when compared to the -O2 and -O3 optimization flags is possible.

Keywords: irace, automatic configuration, parameter tuning, gcc

2. Scenarios:

We use the version 2.0 of irace and GCC version 7.1.

Parameter space defintion of GCC for irace:
  1. categorical space (flags)
  2. mixed space (flags + num)

Target algorithm ACOTSP 1.03 - Makefile ILS - Makefile LKH 2.0.7 - Makefile TS Makefile
Target runner / execution target-runner-ls0 | target-runner-ls3 target-runner target-runner target-runner
Instances instances-tsp.tar.gz instances-tsp.tar.gz instances-tsp.tar.gz instances-qap.tar.gz
Scenario flags flags ls0 | flags ls3 flags flags flags
Scenario flags + num flags + num ls0 | flags + num ls3 flags + num flags + num flags + num

* For the code and details of EMILI please contact Federico Pagnozzi.