COMP60611 Parallel Programs and their Performance syllabus 2013-2014
Even the smallest computer chip nowadays embodies parallel cores, and today's highest performance computers embody substantial amounts of parallel hardware, to the extent that the latest generation of machines harness the power of hundreds of thousands of cooperating cores. The programming of such highly parallel hardware has proved to be difficult: progress has been slow and achieved mostly by "trial-and-error". This course unit introduces students to the associated difficulties by stages, taking a pragmatic, laboratory-based approach to the problem of making parallel programs work.
This course unit studies the base technologies for High Performance Computing and allows 'hands-on' experience of a state-of-the-art parallel computer to be gained. The course unit explores, through a combination of directed reading, a computer-based teaching (CBT) package, group-based seminars, group-based laboratories and a group-based mini-project, a framework for the development, analysis and performance tuning of parallel algorithms for the solution of mainly numerical problems.
By giving students a 'hands-on' programming view, the foundations are laid for appreciation of the more theoretical approaches that can underpin better design of parallel software that behaves as desired. Research-minded students will be in a position to appreciate why both hardware and software are steadily mutating in order to meet the challenges of the multi-core era. Both topics are studied further in the companion course unit COMP60621.
Feedback methodsMarkers provide feedback on laboratory exercise reports and staff are on hand to answer questions in the lab sessions. Verbal feedback is given on the directed reading exercises. Exam revision sessions are scheduled shortly before the exam and students can get feedback on their attempts to answer questions from previous exam papers.
- Assessment written exam (2 hours)
- Lectures (35 hours)
- Analytical skills
- Group/team working
- Oral communication
- Problem solving
|Programme outcome||Unit learning outcomes||Assessment|
|G1 G2||Have an understanding of (1) the different levels of abstraction in computational modelling; (2) a range of different parallel programming models and languages; (3) the range of distinct parallel computer architectures.|
|G1 G2||Have an understanding of parallel execution time overheads and of techniques for reducing them.|
|G2 G3||Be able to implement a moderately complicated application in a parallel programming language.|
|G1||Have an understanding of some parallel numerical algorithms and their execution behaviour.|
|G4||Be able to analyse and improve the performance of parallel applications.|
|Performance optimization of numerically intensive codes||Goedecker, Stefan and Adolfy Hoisie||9780898714845||SIAM||1987||✖|
|Parallel computer architecture: a hardware/software approach||Culler, David E. and Jaswinder Pal Singh and Anoop Gupta||9781558603431||Morgan Kaufmann||1998||✖|
|Designing and building parallel programs: concepts and tools for parallel software engineering||Foster, Ian||9780201575941||Addison Wesley||1995||✖|
|Computer architecture: a quantitative approach (5th edition)||Hennessy, John L. and David A. Patterson||9780123838728||Morgan Kaufmann||2011||✖|
|Programming in Standard Fortran 77||Balfour, A. and D.H. Marwick||0435774867||Heinemann||1979||✖|
Course unit materials
Links to course unit teaching materials can be found on the School of Computer Science website for current students.