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