I am looking into ML for generating more efficient code (i.e. compile time and run time heuristics). I have a phd (compilers, hpc), but very little ML experience.
I would appreciate any references to existing work.
More importantly, which Machine Learning techniques should i be exploring ?
- each data sample is a code + test run + performance data
- large number of data samples, with correct labeling
- large number of parameters to modify
- any sample can be rerun with any parameters (and get correct labeling)
- large amount of cpu to run and re run samples
And also some of my very suspect assumptions...
- much of the code is already locally-optimal (basic compiler optimization)
- some of the parameters are "high level concepts" e.g. replace array with linked list. (so a small parameter change will have varied effects)
- the desired improvement is bounded (a xK improvement is "good enough", K is well known)
- the parameters are sparse i.e. mostly zero (i suspect that most code is basically good, and there are relatively few beneficial changes)
Any pointers to set me on my way would be appreciated