Using AI With GCC to Speed Up Mobile Design
Atlasite writes "The WSJ is reporting on a EU project called Milepost aimed at integrating AI inside GCC. The team partners, which include include IBM, the University of Edinburgh and the French research institute, INRIA, announced their preliminary results at the recent GCC Summit, being able to increase the performance of GCC by 10% in just one month's work. GCC Summit paper is provided [PDF]."
Mnemonics. It's easier to remember. That is a particularly bizarre construction they've come up with, though.
Any plan which depends on a fundamental change in human behavior is doomed from the start.
The latter.
Thank God for evolution.
This is not really AI. Basically it is iteratively trying a bunch of compiler options to see which gives the best result, then storing those for the future.
Greenhills software has provided tools that do this, and more, for many years now. Drop some code, or your project, into the optimizer, setting what critera you want to optimise for (speed, size,...) and the optimiser will successively build and test the project on a simulator and find the best configuration. This is great form embedded systems where there is often a trade off and typical criteria would be (give me the fastest code that fits in the flash).
Genetic algorithms could take this a step further and very interesting work has been done to get GA to design antennas.
Engineering is the art of compromise.
It is done today, it's called byte-code (or a virtual instruction set) and its in Java, Python, and C# to name a few. Back in the old 8-bit days it also used to be called tokenizing for your BASIC programs.
Shh.
TFA explains that the AI is used to finetune the compiler options.
Since GCC has a set of 50+ options, the AI compiles your code with several sets of options (around 500 compilations seem sufficient) and is able to determine which options are useful and which are not for a given code.
So it's NOT learning AI at all !
I'm one of the members of this project. At the moment, the main way in which the system works is to do a quick static analysis step before compilation which gives a set of program features. We iteratively try many different optimisations on the code (and do these optimisations in many different orders) in order to try to work out which combinations of optimisations work well on a particular program. Then, using fairly standard machine learning techniques, we use the program features derived from a new program to see which of our existing modelled programs the new one is most similar to, and proceed from there. We are replacing the man-made (and often totally arbitrary) heuristics within the compiler with a more statistically valid approach.
Further, you can reorder these optimisations, which really does give different results. All this combines to give a huge optimisation space which is suitable for tackling with machine learning.
That's insightful, but the cosmic balance would be better served if you were in fact moderated funny ;-)
Three letter acronyms.
www.tla.com
(not my site)