Parallel Functional Programming (7.5 hec), Spring 2013, DAT280, DIT261
Study Guide (v2, 26 May)
This Study Guide
aims to help you with your revision.
- 2013-04-24: Joel tells me that some Obsidian bugs surfaced. You should install the latest version (using cabal). It is version 0.0.0.5. We are also in the process of making a Google Group, so that students can actually see messages like this...
- 2013-04-23: Joel has provided some extra information on Lab B (how to compile a CUDA program on Linux, some hints about using Obsidian).
- 2013-04-22: There was an initial problem with a driver in the GPU instances in EC2. This is now fixed. The deadline for Lab B is accordingly adjusted to be midnight on sunday April 28 (but please submit earlier if you can).
- 2013-04-19: Because of the difficulty of arranging access to physical machines containing NVIDIA GPUs, we have decided to give you shell access to GPU instances in EC2. (We are going to need you to use these responsibly as they cost real money!) To get access, send your CID and your ssh public key to Nick (frolov at chalmers.se), see help on generating a public key. Please pass this news to others taking the course. (I will also announce it at today's lecture.) We will extend the deadline for Lab B so that you get a week in which to work on it.
- 2013-04-17: Note that Lab B is available. The deadline is wednesday April 24 at midnight. Benchmarking of CUDA programs can be done in our experimental system using Amazon EC2, see the submission page.
- 2013-04-15: Don't forget that the deadline for the first lab is at midnight tonight. Don't worry if you have not got great speedups (or have even got slowdown). Just submit what you have, even if it is not complete!
- 2013-04-11: After talking to a couple of students, I added a small hint to the description for Lab A.
- 2013-04-10: For Lab A, I have made small updates (about installing packages if necessary) to the instructions; I have also revised the given file (given.hs) as it was missing a function definition.
- 2013-04-09: You may now use the Amazon Cloud (EC2) to benchmark
your parallel Haskell programs. The service is available only to students registered on this course. It is a batch system, designed for final benchmarking, rather than development. See the submission page. We are interested to get feedback on this way of providing computing facilities.
- 2013-04-09: Note that there is no meeting of the course on thursday of this week (April 11). We got only two entries for the competition. We will report the results next week.
- 2013-03-22: Lab A is now up. Deadline is Mon. April 15 at midnight.
- 2013-03-20: The second lecture will be on Thursday March 21 at 10.00 in EC. Slides and reading material are available for both this and the first lecture on the Lectures page. The date of the final written exam has been set to the morning of the 28th of May.
- 2013-02-20: The first lecture will be on March 18 at 13.15 in EB. The web page is being gradually constructed from the 2012 instance.
- John Hughes, Lecturer and Examiner, rjmh@chalmers dot se
- Mary Sheeran, Lecturer and Examiner, ms@chalmers dot se
- Nick Frolov, Teaching Assistant, frolov@chalmers dot se
- Office hours: Nick: Wed. 13-14, Fri. 13-14 (may change if unsuitable for many students)
- Homepage: http://www.cse.chalmers.se/edu/course/pfp/
is open to both GU and Chalmers students. Chalmers students should register in advance (as usual). Unlike last year, GU students have to register online in LPW at the Student portal. Registration is obligatory. Please register yourself on the course at the latest 18th March (the date of the first lecture). Otherwise, you may lose your place. If you have problems, please contact the CSE student office.
Further information about registration and how to activate your student account
- PFP is an elective, advanced MSc and doctoral level university course.
It is run by the
at the CSE department
- a written exam (you may bring a "summary sheet").
- Course "size": 7.5hec = 1/8 study year ~= 200h = 25h / week => time to get started;-)
- Grading: The final grade of the course is based on your exam grade. You must, however, also pass the lab assignments. You will get the 7.5 hec once you have passed both the labs and the written exam.
This course does not have a set book. Instead, you will be expected to read a number of research papers. Links to those papers will be made available
through the Lectures page
The aim of the course is to introduce the principles and practice of parallel programming in a functional programming language.
By parallel programming, we mean programming using multiple hardware cores or processors in order to gain speed.
The course covers approaches to parallel functional programming in both Haskell and Erlang. It covers current research on these topics,
and relies heavily on scientific papers as its source materials.
The course covers the principles and practice of parallel programming in both Haskell and Erlang.
Advantages of functional approaches to parallelism: immutability, absence of data races, determinism.
Profiling parallel functional programs: granularity, bottlenecks, locality, data-dependencies.
Parallel functional algorithms: divide-and-conquer.
Approaches to expressing parallelism in Haskell: the Eval monad, the Par monad, parallel strategies, skeletons, data parallelism.
Functional approaches to GPU programming
Parallelisation and distribution for Erlang. Scalability. Handling errors in a massively parallel system.
Case studies of industrial parallel functional programming, such as map-reduce and scalable no-SQL databases.
Guest lectures by leading researchers and practitioners.
- Knowledge and understanding
- Distinguish between concurrency and parallelism.
- Give an overview of approaches to parallelism in functional programming languages in the scientific literature.
- Skills and abilities
- Write, modify and test parallel functional programs, to run on a variety of architectures such as shared memory multiprocessors, networks of
commodity servers, and GPUs.
- Interpret parallelism profiles and address bottlenecks.
- Judgement and approach
- Identify when using a functional language may be appropriate for solving a parallel programming problem.
- Select an appropriate form of parallel functional programming for a given problem, and explain the choice.
The prerequisite for the course is to have successfully completed two years within the subject Computer Science or equivalent.
Course participants must also have completed an introductory course in Functional programming, preferably using Haskell or Erlang.
(Examples at Chalmers are TDA452 and TDA555).
For the purpose of course evaluation and improvement, each course has student
representatives. Their role includes giving the teachers
feedback on the course. The procedure for course evaluation has
changed considerably this year, see the set of slides linked below. The following three students have volunteered to be course representatives: Dmytro Lypai (lypai at student.chalmers,se), Oscar Söderlund (email@example.com) and Ramona Enache (enache at chalmers.se). This is the second instance of a course that will always be evolving. It is also deliberatly close to the state of the art in research, which makes it different from many courses. Please talk to us the teachers or to your student reps about how you experience the course. We promise to take seriously your ideas, suggestions and constructive criticism.
Chalmers NEW central instructions on course evaluation