Since the launch of .net 4.0 a new term that has got into lime light is parallel computing. Does parallel computing provide us some benefits or its just another concept or feature? Further is .net really going to utilize it in applications ? These are some questions on which I am going to discuss in this post. To know more about parallel computing and its application in sql-server database (code named Madison) refer to my post on the topic.
Introduction ... What is Parallel Computing ?
Parallel computing is a form of computation in which many calculations are carried out simultaneously, operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel"). There are several different forms of parallel computing: bit-level, instruction level, data, and task parallelism. Parallelism has been employed for many years, mainly in high-performance computing, but interest in it has grown lately due to the physical constraints preventing frequency scaling. As power consumption (and consequently heat generation) by computers has become a concern in recent years, parallel computing has become the dominant paradigm in computer architecture, mainly in the form of multicore processors.
The benefit to parallel computing is overall speed of execution. As you may have noticed over the past few years, processors aren't getting any faster, but the number of CPU cores per system is increasing. Parallel programming is the means by which you can take advantage of this form of upgrade, by splitting large jobs into smaller tasks that can be handled concurrently by separate cores.
Parallel Computing and .Net
Many personal computers and workstations have two or four cores (that is, CPUs) that enable multiple threads to be executed simultaneously. Computers in the near future are expected to have significantly more cores. To take advantage of the hardware of today and tomorrow, you can parallelize your code to distribute work across multiple processors. In the past, parallelization required low-level manipulation of threads and locks. Visual Studio 2010 and the .NET Framework 4 enhance support for parallel programming by providing a new runtime, new class library types, and new diagnostic tools. These features simplify parallel development so that you can write efficient, fine-grained, and scalable parallel code in a natural idiom without having to work directly with threads or the thread pool. The following illustration provides a high-level overview of the parallel programming architecture in the .NET Framework 4.
CPU performance growth as we have known it hit a wall two years ago. Most people have only recently started to notice. You can get similar graphs for other chips, but I’m going to use Intel data here. The following graphs the history of Intel chip introductions by clock speed and number of transistors. The number of transistors continues to climb, at least for now. Clock speed, however, is a different story.
A good video explaining the benefits and use of parallel computing in .net is below:
Another good video for it is below:
Views from Intel on parallel computing and .net are as follows:
For more reading on the topic refer MSDN article. For examples showing the use of parallel computing in .net refer MSDN Examples Article.
To know more about parallel computing and its application in sql-server database (code named Madison) refer to my post on the topic.
Do update me with your views and suggestions on the post.