Multicore programming with different multi-threading approaches

A few days ago I visited a multicore developers conference in Munich where Dr. Mario Deilmann from Intel held his keynote speech regarding the different multi-threading approaches like Winthreads, POSIX threads, OpenMP, Intel TBB and task oriented concepts. His first conclusion must really be taken into account when you talk about parallel programming: Don't think in threads but in tasks as thread-oriented multi-threading is hard to learn, doesn't scale properly and causes a lot of trouble!

But, in accordance to Mario, OpenMP is a good first approach when talking about parallelism as it offers some easy-to-learn methods which help to parallelize your serial code. An even better concept is task oriented multi-threading, though, as Microsoft is offering now with the .NET 4 framework and Visual Studio 2010. In .NET 4 there are functions, classes and methods which help to parallelize serial code.

But what we learnt by Mario at the Multicore Developers Day in Munich as well is the fact, that there are new approaches when you want to multi-thread your code. One new concept is Cilk which will be part of the next Intel C++ Compiler. Cilk is completely task oriented and you don't need to rewrite your serial code. There are only two main methods - namely spawn() and for() which you add to your code. The rest will be done in the background with the help of a very intelligent scheduler which distributes the threads to the CPU resources as best as possible.

So, if you want to learn more about Mario's keynote and the event itself you should visit this link where you find a summary of the developers conference. But please be aware : these two blog posts are in German (as it is a German event :-)