Parallel Functional Programming (7.5 hec), Spring 2014, DAT280, DIT261
- 2014-05-14: I have put up Lab D, which is about Map-Reduce in Erlang. We had intended to add some exercises related to Accelerate, but finally decided that that would make the lab too long. I will add some suggestions for small exercises with Accelerate to the assignments page shortly. These are not obligatory, but we would advise getting some practical experience with the Accelerate API, as it is interestingly different from Repa. I will also add a small exercise in using Obsidian, for those who are interested in lower level GPU programming. We'll add a submission category for these exercises to fire, so that you can feedback should you wish. But for now please concentrate on the final lab, which has a deadline of midnight on friday next week (May 23rd).
- 2014-05-12: Note that the second guest lecture this week is on friday (not on thursday as I wrote earlier on this page, though I got it right in the google group). There is no lecture on thursday May 15th.
- 2014-05-09: Please note the upcoming interesting guest lectures: on monday May 12th at 13.15 by Eric Stenman (former CTO of Klarna) and on friday May 16th by Richard Carlsson (Klarna).
- 2014-05-08: I forgot to say at today's lecture that there will be no lecture tomorrow (friday May 9), as planned.
- 2014-05-07: Nick is currently unavailable to provide his office hours, and email contact is also slow. We apologise for this. Nick will be back in his office on Monday May 12th, and will provide extra office hours in that week to compensate. Please keep Mary informed if you are having problems meeting lab deadlines, for this or any other reason.
- 2014-05-02: Today's lecture is cancelled due to illness. Apologies. I will add notes to my slides and put them up on the Lectures page. In the meantime, watch Blelloch's invited talk from ICFP 2010. I hope to see you at monday's lecture.
LabC is available. To choose a topic for the tutorial writing, go to the doodle and fill in your name, and your lab group number. The groups should contain two students as usual, by default.
Each topic can only be chosen once. If you would like to propose a different topic or if you have problems, mail Mary (ms at chalmers.se) and Nick (frolov at chalmers.se). My imagination failed me on Erlang-related topics, so please feel free to choose one of your own.
- 2014-04-25: There will be no lecture on monday of study week 5 (April 28). And thursday May 1 is a holiday. So the only lecture in that week is on friday at 15.15. (The plan is to put the next lab up on the monday, and to have the deadline approx. two weeks later.)
- 2014-04-16: There was a bug in the original version of sudoku.erl, which caused it to find invalid solutions in some cases (thanks Sebastian Olsson for finding it!). A fixed version is available here; the only significant change is to the refine_rows/1 function, which could previously return a refined row with duplicate elements. (I also added a check to the solve/1 function that the solution found is actually valid!). This change ought not to affect your parallelisation efforts, so you should just be able to replace the old refine_rows/1 with the new one.
- 2014-04-04: There is no lecture today. The next lecture is monday's lecture on Skeletons by Jost Berthold from Copenhagen University.
- 2014-04-01: The address of the fire system has changed. This should be corrected on course web pages now.
- 2014-03-31: There seem to be insoluble issues with Fire today. Apologies for this. We will extend the lab deadline to midnight tomorrow night and hope to get it fixed tomorrow. Also, we have added some advice about GHC flags and other questions that students have been asking about.
- 2014-03-29: The Fire system for submissions will be available on monday March 31, just in time for you to submit your first lab. The only administrator who can set it up gets back from vacation on that day. We apologise for this delay.
- 2014-03-26: Volunteers to be course rep. are still needed. Please email Mary (ms at chalmers.se) if you are willing to take this on. It should not be too much work and it will allow you to influence the development of the course.
- 2014-03-18: There is now a Google group for the course. Announcements related to the course will be sent here. You can also use it to find a lab partner. Please join the group if you are taking the course.
- 2014-02-18: The first lecture will be on March 17 at 13.15 in EB. The web page is being gradually constructed from the 2013 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 17th 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
. However, note that Simon Marlow's book on Parallel and Concurrent Programming in Haskell
covers a good chunk of the course (and lots of other interesting stuff). Simon will kindly give a guest lecture in the first week of the course.
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
changed considerably last year, see the set of slides linked below. This is the third 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 about how you experience the course, or, even better, volunteer to be a student representative. We promise to take seriously your ideas, suggestions and constructive criticism.
This years representatives include Eugene Greshov (groshev at student.chalmers.se). We still need more volunteers.
Chalmers central instructions on course evaluation