Thursday, December 04, 2008

Parallel Development using VS.NET 2010, Why, and How?

Why?

As demands for application performance increased, customers have traditionally solved the problem by simply increasing the underlying power of the hardware that the application is running on. Over the last several years developers have seen the CPUs that their applications run on start to include 2, 4 or more cores. While the power of the hardware has increased, the transition to a multi-core environment has impacted the applications that developers write. The majority of applications will not be able to automatically take advantage of this multi-core hardware change. Developers will need to modify the way they write applications and the architectures they use for these applications. Creating parallel capable code using current technologies is unfortunately not trivial. Multi-thread programming introduces not only application architecture challenges to complexity and robustness but also exposes the tooling developers use as being optimized for single-threaded development.

How?

Microsoft is making a major commitment to make parallel development accessible to a wide range of developers, whether they are using native code or the .NET Framework. With Visual Studio 2010 we are delivering:
• Visual Studio IDE support for Parallel development
• Native C++ libraries and compiler support
for Parallel applications
The .NET Framework 4.0 also provides the core framework support to build parallel applications through technologies such as P-LIINQ and parallel language semantics and framework components. Visual Studio 2010 provides integrated parallel development support. In Visual Studio 2010 the debugger is aware of the parallel nature of code and can present the state of the application execution during debugging across the different parallel execution units. The debugger also has custom displays for parallel code such as task & thread windows and a “multi” or “cactus” stack view window that graphically shows the execution path of the individual tasks.

Being able to develop and debug your application doesn’t mean that it takes advantage of all the available power. To help developers do this, Visual Studio 2010 also includes a parallel capable performance analyzer that enables you to extensively instrument you code to visually see the
concurrency issues that are in your applications. Combine this with the features of the Visual Studio IDE, and developers have a highly productive, visual environment for building the
best parallel capable applications available.

Microsoft’s goal is to simplify parallel programming by taking a holistic approach and providing solutions which span from local to distributed computing and from task concurrency to data parallelism. Microsoft plans to deliver a solution-stack consisting of OS resource management, a concurrency runtime, programming models, language extensions, libraries, and tools, which will make it simpler for both native and managed code developers to safely and productively build robust, scalable and responsive applications. This will also enable industry partners to complement Microsoft’s technologies in order to solve the complex problems associated with developing high-quality parallel software.
Microsoft’s goal is to increase productivity by encapsulating complexity, so developers can focus on solving business problems.

The CTP includes .NET Framework libraries such as the Task Parallel Library (TPL) and Parallel LINQ (PLINQ), as well as the Parallel Pattern Library (PPL) and Concurrency Runtime for developing native applications with C++, and parallel profiling and debugging tools.
This CTP is available for download as a Virtual PC image. Virtual PC supports only one core; a user will likely not see significant parallel performance benefits on manycore machines.