CGO code: update from a LP1 to ILP
This replace the first LP by an integer LP whose goal is to preselect the possibles edges. The other LPs are updated to use all possible edges and simply minimize the MAE.
As a consequence, do_map
is completely removed.
Constraints of the ILP are detailed in the paper, but:
- instructions of
max_clique
maps to different resources - instructions of
min_order
always conflict with the same resource with other benchmark - for all benchmarks:
- if the IPC is maximum, then every instruction maps at least to a different resource than the other
- if the IPC is not maximum, then every instruction may map to a single resource
Note that
- we lose the complete reverse-engineering of uops
- this leads to very few iterations of the LP1 as edge detection is less accurate that former LP