Module 22755 (2013)
Syllabus page 2013/2014
06-22755
Parallel Programming (Extended)
Level 4/M
Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus
The Module Description is a strict subset of this Syllabus Page. (The University module description has not yet been checked against the School's.)
Relevant Links
Outline
This module covers the programming of massively parallel architectures such as graphics processing units (GPUs), multi-cores and field-programmable gate arrays (FPGAs). The module is focussed on the architecture of such devices and their use in speeding-up common computational tasks. Recent developments in such architectures made this task substantially easier and newly available programming tools allow for high-level straightforward programming of these systems. The module will provide a largely practical introduction to the topic. Lectures will address the basic architectural principles of modern parallel architectures and relevant algorithms and programming techniques. Students will be expected to develop a research-informed critical approach to understanding parallel architectures and techniques.
Aims
The aims of this module are to:
- understand GPU architecture
- understand what applications areas are most suitable to parallel programming
- practical understanding of parallel algorithms
- practical understanding of parallel programming techniques
- concrete skills in programming Nvidia GPUs using the CUDA framework
- skills in using the software tools provided by the CUDA framework
Learning Outcomes
| On successful completion of this module, the student should be able to: | Assessed by: | |
| 1 | describe and explain modern parallel architectures | Examination |
| 2 | describe and explain applications of parallel programming | Examination |
| 3 | describe and explain parallel programming models | Examination |
| 4 | design simple parallel algorithms | Examination, Continuous Assessment |
| 5 | implement more advanced parallel algorithms | Continuous Assessment |
| 6 | demonstrate a research-informed critical understanding of parallel architectures and parallelization techniques | Continuous Assessment (Report) |
Restrictions, Prerequisites and Corequisites
Restrictions:
May not be taken by anyone who has taken or is taking 06-24450 (Parallel Programming)
Prerequisites:
None. Some familiarity with the Haskell programming language would be helpful.
Co-requisites:
06-23635 (Operating Systems with C/C++ (Extended)) or equivalent.
Teaching
Teaching Methods:
2 hrs/week lectures; 1 hr/week practical sessions
Contact Hours:
Assessment
- Sessional: 1.5 hr examination (80%), continuous assessment (20%). Both the examination and the continuous assessment are internal hurdles: students must pass both in order to pass the module.
- Supplementary (where allowed): 1.5 hr examination (80%) with the continuous assessment mark carried forward (20%)
Recommended Books
| Title | Author(s) | Publisher, Date |
| Multigrid Methods on GPUs | Peter Thoman | VDM Verlag, |
| GPU Gems 3: Programming Techniques for High-Performance Graphics and General-Purpose Computation | Hubert Nguyen | Addison Wesley, |
Detailed Syllabus
- Contrasting CPU and GPU architectures
- The CUDA programming model
- A first example: matrix multiplication
- The CUDA memory model
- GPU as part of the PC architecture
- Detailed threading model
- Detailed memory model
- Control flow on the GPU
- Floating-point aspects
- Parallel programming concepts
- Parallel algorithms
- Reduction
- Advanced features
Last updated: 22 August 2012
Source file: /internal/modules/COMSCI/2013/xml/22755.xml
Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus