Assignments

General Information

There are 2 lab assignments (possibly further subdivided), which you should do in pairs. If you have a good reason for doing the assignments by yourself, please contact Nick, Mary or John. You need to pass both labs in order to pass the course. We plan also to offer the option of choosing a research paper, performing a related experiment, and presenting it for the class, to replace part of one of the labs.

The assignments have to be handed in using the Fire system.

Rules - IMPORTANT

Please read these early and carefully!
  1. Deadlines are hard. If you for some reason cannot make the deadline, contact us before the deadline, and tell us what your reason is, together with a realistic proposal of a new personal deadline for you. You may then get an extension of the deadline.
  2. Your last attempt has to be submitted before the final deadline. If you fail to do this, your submission will be rejected.
  3. Cheating is taken very seriously. Before you start working on the assignments, please read the note on cheating.

Tools

The stuDAT (Linux) computers have a recent Haskell Platform installed. You should enable it with vcs-select -p haskell-platform-2011.4.0.0

The GHC user guide contains a chapter about Using GHC (command-line arguments and the like).

Threadscope is also available on the (Linux) stuDAT computers. (Type threadscope at the prompt.)

To get the Haskell Platform for your own laptop, go to the Haskell Platform page on haskell.org (which is a great source of Haskell info).

The Threadscope page includes information about how to use the tool, as well as how to install it.

Installing on Linux laptops seems straightforward.

The Windows version has some problems related to C libraries. Well-Typed have kindly provided us with a zip file for Threadscope that includes the gtk libraries so that it can just be downloaded and the threadscope executable in the bin directory used directly. Very handy! So if you are a Windows user, this is the way to go. (This version of Threadscope does not display time in numbers along the top of the event plots, but it is easy to find out about time by looking at raw events below.)

For installation on a Mac, first follow these instructions about installing gtk on OSX. Note that it has to be a 64 bit Haskell platform. It seems best also to uninstall macports if you have that installed. For help on this, you may contact your class-mate Anders Persson (anders.cj.persson at gmail.com). https://gist.github.com/1655271

Note that Lecture 3, by Andres Löh from Well-Typed, will be about Threadscope and GHC events.

Exercise 1 - Getting Started

Write a simple merge sort program in Haskell and parallelise it

Details.

Lab 1 Part 1

Parallelising scan and a Fast Fourier Transform algorithm in Haskell. The lab description also contains pointers to interesting papers and slides.

Details.

Lab 1 Part 2

NESL-style programming and cost models. Repa programming, manipulating images and writing a tutorial.

Details.

Lab 2

Finally, the second and final lab.

Details.