Intel Updates Compilers For Multicore CPUs 208
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."
learn better parallel programming techniques? (Score:3, Interesting)
Re:Intel - The Software Company (Score:5, Interesting)
OK, I'll Byte (Score:3, Interesting)
As a programmer, I already have abstractions such as Active Objects [wustl.edu]. While this may make it easier for compiler writers or kernel hackers, what benefits does it bring to us ordinary mortals?
Re:Anyone want to... (Score:5, Interesting)
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.
Re:Intel - The Software Company (Score:4, 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.
Re:Moore's law onto programmers?! (Score:1, Interesting)
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).
Would the OS benefit from using this? (Score:4, Interesting)
As an aside, Linux is obviously compiled using GCC but I wonder if Microsoft compiles Windows using the Intel compilers?
Re:Anyone want to... (Score:3, Interesting)
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.