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.
Did his joke just go way over your head or did your joke just go way over my head?
Heh, the 2nd option ;P
Just incase:
The uppercase letter i (eye) "I" as in AI (artificial intelligence), looks in the Ariel font to be the same as the lowercase letter L (ell) "l" as in the name AL (al bundy, etc.), which you got...
But also in ariel, those two looks the same as the pipe character (|) used in the 2nd post, which in programming means OR aka: if ($a = 1 | $b = 2) and also in unix to pipe the output of one command to the input of another, aka: cat file.txt | sort | cut -blahblah | grep moo
Thus "AI GUY" or "Al Guy" or "A | guy" which all appear similar in that font, but have totally different meanings.
P.S. Sorry for being 'that guy' :(
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 ;-)
Fewer, not less.
Three letter acronyms.
www.tla.com
(not my site)
x64 means the AMD-created extension to x86 (they called it "x86-64" first then "AMD64", Intel called their clone "IA-32e" then "EM64T" then "Intel 64").
IA-64 means Itanium, which seems to have flopped because nobody has really figured out how to take advantage of explicit parallelism (it's also been stunningly expensive).
They are not even remotely compatible. In fact there has never been any processor that supports both without software emulation.