Title: Parallel Programming in C#

Proposer: Hans-Wolfgang Loidl

Suggested supervisors: Hans-Wolfgang Loidl

Goal: Parallel implementation of the n-body problem, using the parallel pattern library in C#


The advent of multi-core machines has brought parallel programming into the maintstream of programming technology. However, most parallel programming models developed in the past are fairly low level and require detailed tuning in order to efficiently exploit the computational power of several processors.

A promising approach to parallel programming is the development of high-level abstractions that encapsulate patterns for parallel computation. Such patterns, first introduced as skeletons by Cole [1], have proven to be very useful and flexible. One concrete example is the MapReduce skeleton used by Google to perform massively data-parallel computations [2].

A library that supports a range of such patterns is Microsoft's Parallel Patterns Library for C# [3,4]. The goal of this project is to implement one realistic, high-performance application in C# and to use the above pattern library to support parallel execution. The performance of the application should be assessed on the departmental multi-core machines and compared with related applications in other languages. The primary candidate application is the n-body problem, which simulates the interactions between n moving bodies in 3D space, using a Barnes-Hut implementation [6].

Resources required: multi-core desktops (eg. in the windows labs)

Degree of difficulty:

Background needed: C# (or another obj-or. language); basics of par prg


  1. Algorithmic Skeletons: Structured Management of Parallel Computation, Murray Cole, MIT Press & Pitman, 1989.
  2. MapReduce: Simplified Data Processing on Large Clusters, Jeffrey Dean and Sanjay Ghemawat
  3. Parallel Programming with Microsoft .NET --- Design Patterns for Decomposition and Coordination on Multicore Architectures, C. Campbell, R. Johnson, A. Miller, S. Toub. Microsoft Press. August 2010.
  4. Parallel Patterns Library, C# Documentation
  5. Parallel Programming in C#, Hans-Wolfgang Loidl. Slides.
  6. n-body problem" on Wikipedia.