UCT Computer Science are offering an honours course in Desktop High-Performance Computing: comparative parallel programming languages for multicore and accelerator architectures. This course is open to non-CS and non-UCT people and will run in Room 303 of the CS Building all day from the 23rd to the 26th April, with an assignment afterwards.
The course description is attached below. Interested students to contact Dr Kuttel if they would like to attend.
Desktop High-Performance Computing: comparative parallel programming languages for multicore and accelerator architectures.
Prerequisites: Reasonable proficiency with C or C++ (or Python!)
Course Objectives: Single-core CPU clock speeds have flatlined at 70-100 GFLOPs and are no longer doubling every eighteen months. Multicore architectures are now ubiquitous and commodity Graphical Processing Units (GPUs) have overtaken CPUs in terms of processing power, with performance in the 900-1200 GFLOP range. This is the era of multicores and accelerators. As a result, parallel and multithreaded computing is becoming increasingly important for effective software development. However, knowledge and experience of both parallel algorithms and architectures is required in order to program a parallel computer effectively, particularly in the case of complex hybrid accelerator/multicore machines.
This course will consider the practical development of algorithms and associated coding in boith the OpenMP and CUDA programming environment, for effective general purpose computing with multiple cores and GPUs.
Credits: 3 credits (A one week intesive course, with 5 days of lectures and workshops, followed by an assignment)
Lecturer or Convener: James Gain, Michelle Kuttel and Patrick Marais
Course Contents: This module covers the following areas:
- A overview of parallel computing, with a history of parallel computing in general, clusters, multicore and accelerators (1 lecture).
- Parallel architectures – clusters, multicore machines and accelerators. (1 lecture)
- General comparison of parallel programming models and methods, with focus on OpenMP and CUDA. (1 lecture)
- Thinking in parallel: Parallel algorithms and applications (N-body, finance, image processing) (2 lectures)
- The OpenMP approach to multithreaded computing ( 2 lectures)
- A motivation for general purpose computation on GPUs (GPGPU) (1 lecture)
- The CUDA approach to multithreaded computing (1 lecture)
- CUDA threading and memory models (2 lectures)
- CUDA performance optimization (1 lecture)
- Benchmarking, profiling and proving parallel performance (2 lectures)
Assessment: Assignment (50%), Exam (50%)
Prescribed/Recommended Book: There is no prescribed book, but notes will be provided.