My recent entries have all be about news events, and this one makes no exception. In fact it is just about the recently released Parallel computing extensions for the .NET platform (download). You will of-course need the also recently released .NET 3.5 framework update for them to work (, it comes bundled with the Visual Studio 2008; also released recently). On the very same page you will also find an interesting paper titled “The Manycore Shift”, which doesn’t do justice to it’s title I must say. The title makes you think that it has something to do about parallel core programming, but all it does is just outline what Microsoft intends to do with it’s parallel processing programming model. A marketing gimmick? I’ll let you decide. Looked to me like something written to sell an idea to company execs who have no knowledge of programming and/or the concept of parallel computing. The question is, why is it even shown on a MSDN developers page?
It’s been some time since I downloaded these extensions. Obviously (, if you are a frequent reader of this blog, you will know, ) I am a sucker for any technology that has the potential to provide performance enhancements. Unfortunately I have very little time to devote to anything right now so could couldn’t do too much testing with the extensions. Still, I did manage to glance through the documentation provided (, you can find the chm on the same download page,) and one thing that immediately caught my eye was the fact that the documentation talks about “different approaches for handling parallelism”. The framework allows you to have Data and Task parallelism using Imperative and Declarative models. The docs for the extension are good; hmm…. well not great I must say. They take for granted that the reader has some knowledge about the concept of parallel computing, and is pretty thorough with basic threading. Not the most friendliest of docs , but not a very big problem for someone with an experience of MSDN docs under his belt. The only other library I have seen that allows parallel computation using many cores is Intel’s Thread Building Blocks (TBB) which I think allows Task based parallelism.
Parallel Extensions to the .NET Framework contains a few different approaches for handling parallelism in your applications including imperative and declarative models for data and task parallelism.
I have not had enough time to experiment with either and I don’t think too much will change soon , but the fact I am writing this entry is because parallelism is going to become the single most important aspect of program design over the next few years. Especially in the area of game development where hardware and conventional programming approaches are being pushed to their very limit. There are going to be processors with 8 cores soon and there has been talk of next gen game consoles having > 20 cores. Any system that is being designed for tomorrows needs, has to take into consideration parallel computing. With a good documentation at hand, the Parallel computing extensions are a great way to get your hands dirty with the concept of parallel computing. The extensions also provide some real world examples. Invaluable for learning anything. (I am sure some of you are going to be very interested in the ray-tracer example 😉 .) Go get some!