Slashdot Mirror


Intel Updates Compilers For Multicore CPUs

Threaded writes with news from Ars that Intel has announced major updates to its C++ and Fortran tools. The new compilers are Intel's first that are capable of doing thread-level optimization and auto-vectorization simultaneously in a single pass. "On the data parallelism side, the Intel C++ Compiler and Fortran Professional Editions both sport improved auto-vectorization features that can target Intel's new SSE4 extensions. For thread-level parallelism, the compilers support the use of Intel's Thread Building Blocks for automatic thread-level optimization that takes place simultaneously with auto-vectorization... Intel is encouraging the widespread use of its Intel Threading Tools as an interface to its multicore processors. As the company raises the core count with each generation of new products, it will get harder and harder for programmers to manage the complexity associated with all of that available parallelism. So the Thread Building Blocks are Intel's attempt to insert a stable layer of abstraction between the programmer and the processor so that code scales less painfully with the number of cores."

8 of 208 comments (clear)

  1. learn better parallel programming techniques? by sr.+taquito · · Score: 3, Interesting

    If compilers keep abstracting away the interface between the programmer and the cpu, programmers will be less likely to write better code or learn new techniques that take advantage of all the power a few extra cores can provide right? That's just my take on it. Then again, I also think learning parallel programming techniques is fun, and a little more academic than most career programmers might like.

    --
    mr pibb + red vines = crazy delicious
  2. Re:Intel - The Software Company by dmoore · · Score: 4, Interesting

    I have not tried their compiler, but for the Intel Performance Primitives (IPP), a library of useful MMX/SSE-optimized functions written by Intel, they explicitly fall-back to slow versions of the code if it detects an AMD processor, even if the AMD processor has MMX/SSE/SSE2. This kind of behavior is one reason that you may not want to trust Intel for your compiler needs if you are planning on doing development for more than just Intel-branded CPUs.

  3. OK, I'll Byte by Skjellifetti · · Score: 2, Interesting

    As the company raises the core count with each generation of new products, it will get harder and harder for programmers to manage the complexity associated with all of that available parallelism.

    As a programmer, I already have abstractions such as Active Objects. While this may make it easier for compiler writers or kernel hackers, what benefits does it bring to us ordinary mortals?

  4. Re:Anyone want to... by LWATCDR · · Score: 4, Interesting

    SSE4 the latest and greatest vector instruction set from Intel. MMX->SSE->SSE2->SSE3->SSE4. These instructions speed up things like trans-coding video and audio. They are also good for anything that does a lot of Floating-Point. The downside is very few systems have CPUs that support SSE4 and selecting it may hurt systems that don't have SSE4 or the program might not run at all depending on how the compiler is written. My bet is it will degrade gracefully. Over all SSE4 is most useful for people that are writing custom software right now and will become commonplace in off the shelf software once AMD supports it and systems that support it are more common.
    The Threading Building Blocks are yet another attempt to make writing multithreaded code easier. Frankly I don't find pthreads hard but maybe I am just odd.
    Threading is very important because we are not going to see an endless increase in clock speed anymore. Intel, AMD, and IBM are all pushing multiple cores. While adding an extra core or three really does help modern systems at least a little since we are often running multiple tasks current software will not scale as well when the cores start growing in a Moore like fashion. Right now we are at four cores if Moore's law holds in two years we might see eight, then 16, then 32... As you can see it gets out of hand pretty quickly. Your average desktop will not use four cores very well much less eight until software is written to take advantage of more cores.
    Yes I know that Moore said 18 months but I was going for a nice round numbers.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
  5. Re:Intel - The Software Company by Chandon+Seldon · · Score: 3, Interesting

    It's really useful for a CPU company to develop an optimizing compiler for their hardware. It forces them to understand how their CPU features actually speed up software, and it gives them the opportunity to prove that certain hard optimizations actually work. It would probably be best for everyone if the compiler were open source, but if Intel thinks they need to sell it as a commercial product to justify it financially we still get all of the benefit on their future processor designs.

    --
    -- The act of censorship is always worse than whatever is being censored. Always.
  6. Re:Moore's law onto programmers?! by Anonymous Coward · · Score: 1, Interesting

    I know people like car analogies, bear with me. Let's imagine a CPU is like a horse.

    For years, people have been selectively breeding horses (CPUs) to allow them to go faster and faster. If you wanted a job done quickly, you simply bought a faster horse. That worked great until recently. Now, there isn't much improvement. So, instead of a faster horse, people are offered more horses for the same price. That's great, except that now the challenge becomes managing multiple horses in parallel and figuring out how to accomplish some of the same tasks as before, using all those horses efficiently. Hitching two horses to a wagon is easy. Four, harder. Eight, even more difficult. Eventually there is a practical limit, but in all cases, all you get from the horse breeder is a horse (the hardware). It's up to you to figure out how to put them together to get the job done effectively (software). Worst case, it's as if you had only a single horse that isn't much faster than before. Hence, the burden of an actual performance increase is shifting more to the user of the hardware than has been the case in the past. Adding more horses isn't as easy or simple a solution as before.

    To stretch the analogy even more ridiculously, I guess this announcement is like Intel just released their latest and greatest version of a multi-horse harness especially for scientific stagecoaches (FORTRAN).

  7. Would the OS benefit from using this? by wazzzup · · Score: 3, Interesting

    I know OS X is compiled using GCC but I wonder if Apple would see performance gains by using it? If they did, would it somehow introduce problems? Basically, I'm wondering if there would be a downside to using the Intel optimized compilers as opposed to all-purpose GCC compiler.

    As an aside, Linux is obviously compiled using GCC but I wonder if Microsoft compiles Windows using the Intel compilers?

  8. Re:Anyone want to... by James_Intel · · Score: 3, Interesting

    The compiler will try like crazy to do that - and sometimes it does a great job. Most of the time - you'll have work to do (it won't do it for you). What we've found though - is that anything a programmer can do to express tasks that are splittable - makes the automation more and more possible. OpenMP (11 years old now) has carried that into the multicore world from the world of supercomputing - for loops. Don't have loops? Well, that's there would be a tough one.
    Threading Building Blocks is a good option for C++ developers - because it pushes you to rewrite key parts of the code - for thread safety (too bad C++/C doesn't force that) and for this automation of splitting. Often this is easier than you'd think - and then you're in easy city. I'm not saying it is easy, nor a cure-all - but it is useful to look at it and see if it isn't the best idea so far - and see what else we can do.