-
Notifications
You must be signed in to change notification settings - Fork 126
Description
OpenTuner finds good configurations, but they include many parameters and some of them may be redundant. It would be good to know which parameters in final configuration are crucial and which do not have much impact on the objective function.
There are 2 potential users:
- Developers optimizing SW will be able to identify the most important parameters, and eliminate inefficient and unstable parameters. This helps to reduce number of parameters and thus length of command-line, dependency on SW features (e.g. less internal compiler optimization flags), potentially making optimal configuration more stable and more widely applicable (e.g. less internal flags, more compiler versions supported).
- Compiler developers evaluate impact of specific compiler optimizations and improve compiler source code if behaviour is unexpected
Example:
configuration = {a=1, b=2, c=3, d=4, e=0}, time=10.0, id=1The current proposal is to include an OpenTuner technique which performs various measurements of subset of configuration and tracks regressions/improvements, effectively finding the best and the shortest configuration.
{a=1, b=2, c=3, d=4}, id=2, time=10.0, # -e from orig
{a=1, b=2, c=3, e=0}, id=5, time=11.5, # -d from orig
...
{a=1, b=2, d=4}, id=9, time=9 # -e from id=2
{a=1, d=4}, id=10, time=11
{a=1, b=2}, id=11, time=12
...
{a=1}, id=12, time=13Report
Post-processing detects and removes negligible parameters from original configuration, and score may even improve. First output shows new configuration with best result (better or within threshold = coeff of variation).
Original cfg: {a=1, b=2, c=3, d=4, e=0}, time=10.0
New best cfg: {a=1, b=2, d=4}, time=9.0Next table shows impact of parameters. First row shows new best configuration. Each next rows shows result after removal of next parameter with smallest (precise or estimated) penalty.
| Id | Score | Penalty | Best | Reduced option(s) | Penalty on best |
|---|---|---|---|---|---|
| *7 | 9 | n/a | 0.0% | ||
| 8 | 11 | 22.2% | 22.2% | b | 22.2% |
| 11 | 13 | 18.2% | 44.4% | d | 33.3% |
| 13 | 20 | 53.8% | 122.2% | a | 44.4% |
Columns:
Id- configuration id, asterisk highlights the best configScore- result (objective function outcome)Penalty- impact of parameter (relation between current score and prev score)To Best- relation between current score and the best scoreParameter- parameter which is dropped from previous configuration (row above)Penalty on Best- penalty if parameter removed from the best configuration, useful as initial quick estimate of impact