We're working with Microsoft to develop several tutorials introducing developers to high-performance computing, parallel programming, and Windows HPC Server 2008. Our first tutorial (for experienced HPC developers, "Exploiting Data Parallelism with OpenMP, MPI and HPC Server 2008"), is available here. We are working on our second tutorial, "From Sequential to Parallel Development", which is nearing completion. This is more introductory in nature, taking the traditional "sequential" developer step-by-step into the world of parallel programming. The tutorial is extensive, currently 50 pages in length, complete with source code, lab exercises, and solutions in both VC++ and C#.
We start with a GUI-based Mandelbrot application, and show various ways to parallelize the application via multi-threading --- explicitly with .NET threads, then implicitly with OpenMP and the TPL (Task Parallel Library in the upcoming PFx, or Parallel Extensions to .NET). We then architect a client-server version of the Mandelbrot app, introduce Windows HPC Server 2008, and show how to parallelize the app across a cluster. This includes a discussion of many topics, including:
- Multi-threading
- Multi-processing
- BackgroundWorker and Thread classes
- OpenMP
- TPL
- MPI
- MPI.NET
- programming against the HPC Server 2008 API
- automating application deployment and job submission
The goal is to show developers how to take a sequential, GUI-based application and parallelize this app across both multi-core and cluster-based hardware. Here's the current draft of the tutorial document: SeqToParallelHPC.pdf. The current download including source code and lab exercises: SeqToParallelHPC.zip. Any and all feedback greatly appreciated. Enjoy!
Posted
Aug 18 2008, 09:29 PM
by
joe-hummel