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]."
"Milepost is realizing the vision of customized hardware with tailor fit software" This particular part made me think of a day when every program comes with a redesign.exe. Simply click the button, and it scans every piece of hardware on your computer, and then rewrites every optimization in it to perfectly fit your computer. Programs that streamline to your hardware, maybe even change the OS's they work under. It's written for Windows, you're running OSX? No problem, it'll rewrite itself as an OSX program. Though, that's probably still decades off. But AI seems to me to be the way to ultimate compatibility.
The main barrier to its wider use is the currently excessive compilation and execution time needed in order to optimize each program
I suppose allowing AI to control some of the compiler options isn't really a bad idea, but implementing it by iteratively compiling a program seems silly to me. From the article i get the impression that it will basically adapt the compiler to one set of hardware (wherever it is run on) but that it will not adaptively compile new programs in novel ways, it simply remembers the set of compiler options that works best for your hardware. Interesting, but I don't see specific hardware differences and compiler options as the real bottleneck in compile time.
Prediction: The real iPhone killer is going to be sex robots from Japan. Think about it.
As I understood it, a fair bit of compiler optimization is already categorized as AI. The summary should probably point out that the AI implemented here is learning AI, which is far more meaningful.
What I would really like to see is more AI used to help users in a variety of fields both within the program workings itself (computer side), as well as on the design of the actual content (user side).
We already have things like predictive texting, spellcheck, grammar check, and debuggers that attempt to aid in the creation process, but how far could this be developed? After all, in most computer-related work outside of multimedia it is the user not the computer that is slowing things down.
Of course it could always end up going badly, imagine if Clippy attempted to help with EVERYTHING!
Clippy: "I see you're writing a program, would you like help including your headers?"
Ugh!
Actually IBM did this a few decades ago.
The Model38/AS400/iSeries are all compatible but very different machines internally.
IBM came up with an "idea" instruction set that no CPU used. When you do the initial program load "install" on one of those machines it compiles the ideal instruction set into the actual instruction set for that PC.
That allowed IBM to move from old bipolar cpus to the Power RISC cpus with 100% compatibility.
There isn't any reason why you couldn't do the same with Linux or Windows today.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
This is interesting. Note that the industry (or parts of it, anyhow) is salivating about a move in precisely the opposite direction. VMware in specific and virtualization in general promises software manufacturers the ability to ship VMs with their software on it. Allowing them to write for only ONE, non-existent machine.
If this tech you're thinking about came to pass, the pendulum would have to swing mighty far back.
I always hate when that stupid Halting Problem appears in discussions of AI.
Does it matter if the program runs forever? Not really. In fact, if it runs longer than you could care about, then all the better.
Does it matter if it runs for a set of inputs that you actually care about? Yes
If it runs for a set of inputs you expect to be entered, then that is all you care about.
Nobody said the process needs to be perfect, it never is, which is why that theory is stupid. (it is AI, I isn't perfect in the first place, so neither should AI!)
Send an input to program, is it still running? Nope? Then it failed, try again.
As an example of this, let us think of a human.
Ah yes, the human, a fantastic piece of meat.
Woops, looks like it just jumped off a building, humans weren't designed for that!
SPLAT. Program terminated.
That is a bad input, which can be tested for by an external entity, which is the compiler which compiled the "human".
Now let us try again, add some wings.
SPLAT, lets make them longer.
SPLAT, lets make the human smaller.
Oh, OH, oh no.. SPLAT
And so on, this can be done as many times as possible until something works for a set period. Then you don't care, just like some life doesn't particularly care for the survival of offspring.
Ah, i want Spore....