Module 22755 (2009)

Syllabus page 2009/2010

06-22755
Programming Massively Parallel Architectures

Level 4/M

Dan Ghica
10 credits in Semester 1

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

Relevant link.


Outline

This module covers the basics of programming massively parallel processors as commonly found in graphics processing units (GPUs). The module is focussed on the architecture of such devices and their use in speeding-up common (non-graphical) computational tasks. Recent developments in GPU 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 GPUs andrelevant algorithms and programming techniques. The exercises will be practical programming based on the CUDA framework for Nvidia GPUs.


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:
1describe and explain modern GPU architecture Examination
2describe and explain applications of parallel programming Examination
3describe and explain the CUDA programming model Examination
4design simple parallel algorithms Examination and continuous assessment
5implement more advanced parallel algorithms using CUDA Continuous assessment
6use CUDA tools to debug and profile programs Continuous assessment

Restrictions, Prerequisites and Corequisites

Restrictions:

For 2009/10, the module can only accommodate a certain maximum number of students, depending on how much equipment can be purchased. If too many students opt for this module, a test will be conducted to limit the numbers of students.

Prerequisites:

None

Co-requisites:

None, but systems level programming skills will be helpful.


Teaching

Teaching Methods:

2 hrs/week lectures; 2 hrs/week practical sessions

Contact Hours:

35


Assessment

  • Sessional: Normal (sessional): 1.5 hr examination (80%), continuous assessment (20%)
  • Supplementary (where allowed): By examination only (100%)

Recommended Books

TitleAuthor(s)Publisher, Date
Multigrid Methods on GPUsPeter ThomanVDM Verlag,
GPU Gems 3: Programming Techniques for High-Performance Graphics and General-Purpose ComputationHubert NguyenAddison Wesley,

Detailed Syllabus

  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

Last updated: 21 Aug 2009

Source file: /internal/modules/COMSCI/2009/xml/22755.xml

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