Slashdot Mirror


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]."

14 of 173 comments (clear)

  1. Re:MachIne Learning for Embedded PrOgramS opTimiza by SwordsmanLuke · · Score: 2, Informative

    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.
  2. Re:We should have recruted Al earlier. by snoyberg · · Score: 2, Informative

    The latter.

    --
    Thank God for evolution.
  3. Calling this AI is overhype... and its not new by EmbeddedJanitor · · Score: 5, Informative
    The authors of the paper don't call it AI.

    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.
    1. Re:Calling this AI is overhype... and its not new by Nimzovichy · · Score: 2, Informative
      Sure, it's not really AI, it's machine learning. AI is just a more media friendly term I guess.

      You are right that many people have been doing iterative optimisation (what you describe) for years, especially for embedded systems, however this is a little different.

      In that scenario, all the learned information about the program is thrown out at the end of the process every time. In this scenario, we try to build a compiler that remembers what kinds of optimisations and what order of optimisation was good for a particular kind of program. Then when we see a new program similar to that, we can use that offline knowledge.

  4. Alive and well never went out of style. by headkase · · Score: 3, Informative

    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.
    1. Re:Alive and well never went out of style. by LWATCDR · · Score: 3, Informative

      There is a difference between a JIT compiler, a tokenized basic program, a byte code interpreter like P-Code and what IBM did.
      This is from the Wikipedia.
      "Additionally, the System/38 and its descendants are the only commercial computers ever to use a machine interface architecture to isolate the application software and most of the operating system from hardware dependencies, including such details as address size and register size. Compilers for System/38 and its successors generate code in a high-level instruction set (originally called MI for "Machine Interface", and renamed TIMI for "Technology Independent Machine Interface" for AS/400). MI/TIMI is a virtual instruction set; it is not the instruction set of the underlying CPU. Unlike some other virtual-machine architectures in which the virtual instructions are interpreted at runtime, MI/TIMI instructions are never interpreted. They constitute an intermediate compile time step and are translated into the processor's instruction set as the final compilation step. The MI/TIMI instructions are stored within the final program object, in addition to the executable machine instructions. If a program is moved from a processor with one native instruction set to a processor with another native instruction set, the MI/TIMI instructions will be re-translated into the native instruction set of the new machine before the program is executed for the first time on the new machine."
      As you can see it is brilliant idea. If Microsoft had used it for Windows Apps way back when then NT on the Alpha, MIPS, and the PPC might have actually been very useful. Oh and Intel would have been a very unhappy camper.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  5. Re:We should have recruted Al earlier. by Anonymous Coward · · Score: 1, Informative

    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' :(

  6. Re:Learning by eulernet · · Score: 2, Informative

    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 !

  7. Re:How does the magic happen? by Nimzovichy · · Score: 3, Informative

    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.

  8. Re:Learning by Nimzovichy · · Score: 3, Informative
    Actually GCC has way more than 50 compiler options. In addition, this work actually goes deep into GCC, modifying the code and exposing many more optimisations that are not available with standard compile flags.

    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.

  9. Re:I, for one, by johannesg · · Score: 2, Informative

    That's insightful, but the cosmic balance would be better served if you were in fact moderated funny ;-)

  10. Re:Aw man... by Anonymous Coward · · Score: 0, Informative

    Fewer, not less.

  11. Re:Would you mind telling me by mattack2 · · Score: 2, Informative

    Three letter acronyms.
    www.tla.com
    (not my site)

  12. Re:Would you mind telling me by Anonymous Coward · · Score: 1, Informative

    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.