SYLLABUS PAGE, 2011/12
06-24450
Parallel Programming
Level 3/H
|
Dr D R Ghica |
10 credits in Sem2 |
Programmes | Modules | Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus
The School of Computer Science Module Description is a strict subset of this Syllabus Page. (The University module description has not yet been checked against the School's.)
Changes and Updates
New module for 2011/12.
Relevant Links
Outline
| This module covers the basics of programming 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. |
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 and coursework |
| 5 | Implement more advanced parallel algorithms. | Coursework |
Restrictions, Prerequisites and Corequisites
Restrictions:
| May not be taken by anyone who has taken or is taking 06-22755 Parallel Programming (Extended) |
Prerequisites:
| None. Some familiarity with the Haskell programming language would be helpful. |
Co-requisites:
| 06-23636 Operating Systems with C/C++ or equivalent. |
Teaching
Teaching methods:
| 2 hrs/week lectures; 2 hrs/week practical sessions |
Contact hours:
| 35 |
Assessment
Normal (sessional): 1.5 hr examination (50%), coursework (50%). Both the examination and the coursework are internal hurdles: students must pass both in order to pass the module
Resit (supplementary) assessment (where allowed): By examination only (100%)
Recommended Books
| Title | Author(s) | Publisher, Date | Comments |
| 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
The detailed syllabus is subject to change.
There will be a set of weekly practicals.
- 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
Programmes | Modules | Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus