Tool Support

NOTICE is also a GUI framework. It provides different features for non-functional testing of compilers.

For instance, compiler users can:

  • define input program under test: generate Csmith program or use Cbench benchmark programs
  • define datasets: select dataset for selected program
  • select target system architecture: choose processor architecture such as x64, x86, ARM. This is part of our future work since we are running experiments only on a x64 architecture. We are preparing a QEMU docker image to handle platforms heterogeneity.
  • define compiler versions: GCC compiler version from 3.x to 5.x
  • configure monitoring components: versions, labels, ports, logins, passwords
  • choose ip address of cloud host machine where experiments will be running
  • define resource constraints to running container: in case we would run optimizations under resource constraints.
  • choose search method: mono or multi-objective search
  • choose meta-heuristic algorithm: GA, RS, NS, NSGA-II
  • choose the number of iterations: number of evaluations
  • choose optimization goal: the goal can be execution time, memory, cpu, code size or compilation time optimizations. For multi objective search, users can choose trade-offs between these objectives.

The execution result of this tool will be the best optimization sequences corresponding to user requirements.

Snapshot of NOTICE GUI interface

Capture d’écran 2016-03-29 à 11.30.47.png