Parallel implementation of the n-body problem, using the parallel pattern library in C#
Description: 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].
I have extensive experience in scientific programming (mostly numerics and individual-based models). There is plenty of good information on the Barnes-Hut algorithm as well as its parallel implementation available and the PPL library (which BTW is called TPL for C#) has a nice API, so this task seems to be pretty straightforward.
P.S.: If additional implementations in other languages are needed I would also be happy to do e.g. C++, D, Java, Python or Ruby.