This module aims to provides an introduction to parallel computing on modern supercomputer. The aim of this module is to provide students with an understanding of the modern processors and architectures of parallel computers, enable students to have preliminary ability in design and implementation of parallel algorithms in MPI.
Parallel programming with emphasis on developing applications for processors with many computation cores. Computational thinking, forms of parallelism, programming models, mapping computations to parallel hardware, efficient data structures, paradigms for efficient parallel algorithms, and application case studies.
A. Identify serial and parallel algorithm
B. Appreciate basic principal and techniques in devising parallel algorithm
C. Devise and implement parallel algorithms
D. Acquire basic software development skill using MPI
E. Analyze and implement common parallel algorithm patterns in a parallel programming model such as CUDA.
F. Design experiments to analyze the performance bottlenecks in their parallel code.
G. Apply common parallel techniques to improve performance given hardware constraints.
H. Use a parallel debugger to identify and repair code defects; Use a parallel profiler to identify performance bottlenecks in their code.
I. Apply common parallel algorithm patterns.
J. Demonstrate understanding of the major types of hardware limitations that limit parallel program performance.
K. Identify and solve a computational problem with parallel algorithm design and program.
The teaching philosophy of the module follows very much the philosophy of Syntegrative Education. This has meant that the teaching delivery pattern, which follows more intensive block teaching, allows more meaningful contribution from industry partners. This philosophy is carried through also in terms of assessment, with reduction on the use of exams and increase in coursework, especially problem-based assessments that are project focused. The delivery pattern provides space in the semester for students to concentrate on completing the assessments.
Students will be expected to attend about formal lectures, seminars, tutorials as well as labs. Students will be introduced to the academic content and have a understanding of lecture materials. In addition, students will be expected to devote unsupervised time to private study. Private study will provide time for reflection and consideration of lecture material and background reading