Appendix C: Technology Overview
Appendix C describes some of the parallel computing resources offered by Microsoft® that are not covered in this book. The "Further Reading" section includes URLs for websites that have more information. Figure 1 illustrates the different offerings and how they are related.
This book covers the Parallel Patterns and Asynchronous Agents libraries. These libraries use the native Concurrency Runtime, which includes a task scheduler and a resource manager that execute native parallel workloads on multicore architectures.
The Microsoft Visual C#®, Visual Basic®, and Parallel LINQ (PLINQ) languages ship with the Microsoft Visual Studio® 2010 development system. These languages use the Task Parallel Library (TPL) to support parallelism. The F# language also ships with Visual Studio. It exposes a more functional approach to parallelism than the other languages, and it emphasizes immutable data types. However, the F# runtime libraries build on and integrate with TPL, and the F# PowerPack includes parallelization support that is built on top of PLINQ. How to develop parallel applications that use the Microsoft .NET Framework 4, TPL, and PLINQ is covered in the companion to this book, Parallel Programming with Microsoft .NET. Another library, Reactive Extensions (Rx), allows you to use observable collections to compose asynchronous and event-based programs.
The Accelerator API (not shown in the diagram) provides a functional programming model for implementing array-processing operations. Accelerator handles all the details of parallelizing and running the computation on the selected target processor, which includes graphics processing units and multicore CPUs. The Accelerator API is largely processor independent so, with only minor changes, the same array-processing code can run on any supported processor.
Visual Studio 2010 contains several tools for debugging and profiling parallel applications. For examples of how to use them, see Appendix B, "Debugging and Profiling Parallel Applications." You can also use the CHESS tools from Microsoft Research to detect bugs in your parallel code.
CHESS and Accelerator are incubation or research projects and Microsoft has made no commitment to ship them. However, they contain many new ideas and approaches that will interest anyone who has read this far in the book. You're encouraged to download them, evaluate them, and provide the respective teams with feedback.
DryadLINQ is a programming environment for writing large-scale data parallel applications that run on High Performance Computing (HPC) clusters. DryadLINQ combines two important pieces of Microsoft technology: the Dryaddistributed execution engine and the .NET Language Integrated Query (LINQ).
All of the above technologies, with the exception of DryadLINQ, are largely for parallelism on a single computer. Windows HPC Server targets clusters of servers and supports scale-out across many computers. Although the technologies are very different for clustered computing, some of the fundamental patterns discussed in this book, such as Parallel Tasks and Parallel Aggregation, are still applicable.
The MSDN® Parallel Computing Developer Center covers parallel development on both the managed and native concurrency runtimes, as well as the Visual Studio 2010 tools that support writing parallel programs. For more information, see:
For information about F#, including the language reference and walkthroughs, see the Microsoft F# Developer Center at:
Windows HPC Server 2008 R2 product information and developer resources are available on the Windows HPC Server site at:
A Community Technology Preview (CTP) of DryadLINQ is available for download at:
Details of the Accelerator project are available at:
Descriptions and downloads for Rx are available at:
CHESS is a Microsoft DevLabs project, and is available at:
A more in-depth overview of possible future directions for support of parallel programming in Visual Studio can be found in Stephen Toub’s talk at TechEd Europe 2010 at:
Last built: March 9, 2012