University of Birmingham School of Computer Science
Home double arrow Internal double arrow Modules

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

Module web page

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:

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.

  1. Contrasting CPU and GPU architectures
  2. The CUDA programming model
  3. A first example: matrix multiplication
  4. The CUDA memory model
  5. GPU as part of the PC architecture
  6. Detailed threading model
  7. Detailed memory model
  8. Control flow on the GPU
  9. Floating-point aspects
  10. Parallel programming concepts
  11. Parallel algorithms
  12. Reduction
  13. Advanced features

Programmes | Modules | Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus