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.
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.