Parallel Dwarfs

The Parallel Dwarfs project is a suite of 13 kernels (as VS projects in C++/C#/F#) parallelized using various technologies such as MPI, OpenMP, TPL, MPI.Net, etc. It also has a driver to run them, collect traces, and visualize the results using Vampir, Jumpshot, Xperf and Excel

Welcome to the Parallel Dwarfs Projects!

If you are interested in learning about parallel programming using MPI, OpenMP, PFx, etc., feel free to download and run these kernels on your machine (or cluster!). If you are interested in contributing, please see below.

These "Dwarfs" (kernels) were written by Students at the St Petersburg University in Russia under Prof. Vladimir Safonov (see People).

The original idea behind the Dwarfs is from Phil Colella's paper, which was later expanded on by Dave Patterson. See the following for info about the Dwarfs themselves: UCB Dwarfs; Also see this presentation by Patterson on the philosophy behind the Dwarfs.

What they are

The Dwarfs are basically kernels that represent a wide spectrum of computations for various application domains. This is an attempt to parallelize these 13 algorithms using various parallelization technologies available on Windows. The download is a VS2010 solution with the kernels (dwarfs) in C++ and C#, an F# input data generator and a driver. You can use the driver to select one or more dwarfs, input sizes for the runs, tracing and visualization options. The dwarfs can be run on a laptop, multi-core workstation or a cluster.

Considering the number of kernels, languages, input sizes, etc., you can run approximately 350 combinations of the dwarfs!

Screenshots

Here are some sample screenshots of the dwarfs & the reports.

Running the Dwarfs

After downloading & setting up the project, you can run the dwarfs as follows:

PS> exec-dwarfs -names structuredgrid,unstructuredgrid -platform unmanaged -parallel serial,mpi,omp -size small -mpitrace -plotvampir -plotexcel

The above invocation will do the following:

Usage scenarios

The Dwarfs project can be used in various scenarios such as:

Caveats!

Please keep the following in mind when using the Parallel Dwarfs:

Invitation

As mentioned before, this started as a student project and is now available on Codeplex mainly because we believe it can become a great educational and research vehicle. We hope that you will download it, report any bugs you find and hopefully actively participate in improving the kernels... some examples of how you can help:

Setup

Please see the Prerequisites and Setup information page.

Project conventions

Please see the Project Conventions page.

For a tutorial on programming an HPC cluster, please see:

You can run the Parallel Dwarfs on your workstation or a cluster. You can setup a cluster with as little as two machine or with several hundred. The driver (dwarfbench) can run the kernels locally or on a Windows HPC cluster and schedule at a core, socket or node level.

http://www.microsoft.com/hpc/dev

Frequently asked questions

FAQ