2018/2019, Semester 1
School of Computing (Computer Science)
Modular Credits: 4
This module has two aims: i) provides an introduction to the field of parallel computing, and ii) builds basic parallel programming foundation for students. After taking this module, students will be able to understand the different aspects of parallel architectures, convert a sequential program into parallel program under different parallel models and evaluate the performance of parallel programs.
The module is divided into four parts: parallel computation models and parallelism, parallel architectures, parallel algorithm design and programming, and new parallel computing models.
Topics includes: theory of parallelism and models; shared-memory architectures; distributed-memory architectures; data parallel architectures; interconnection networks, topologies and basic of communication operations; principles of parallel algorithm design; performance and scalability of parallel programs, overview of alternative parallel computing models such as grid, cloud, GPGPU.
After the course, students are able to:
Parallelize a problem with multiple approaches based on programming models.
Implement basic parallel program using different parallel programming models.
Evaluate the pros/cons on using different parallel programming models for a particular problem.
Differentiate and evaluate the different types of parallel architecture.
Measure and analysze execution performance of parallel programs.
Mandatory prerequisites: CS2100 Computer Organisation or CG2007 Microprocessor Systems or EE2024 Programming for Computer Interfaces
Students are advised to take CS2106 Introduction to Operating Systems before taking CS3210.
1. Overview of parallelism and parallel computation models:
Levels of parallelism bits, instructions, threads, processes
Essential concepts, theory and laws of parallelisms, organisation of parallel computing models and platforms
2. Parallel architectures:
Basic coverage instruction level parallel, thread level parallelism in hardware
Shared-memory, distributed-memory, data-parallel architecutres
Interconnection topologies and networks
3. Parallel algorithm design:
Parallelization methodology, decomposition techniques
Basic coordination models such as data-parallel, task pool and master-slave
4. Scalability and performance:
Performance metrics, overheads of parallelism, scaling characteristics of parallel systems.
5. Parallel programming:
Shared-address space programming
6. Overview of alternative computing models:
Heterogeneous, grid, cloud computing
Grading for CS3210:
10% - Tutorial (attendance and participation)
35% - Assignments
15% - Test (closed book)
40% - Final Exam (closed book with A4 handwritten reference sheet)
Workload Components : A-B-C-D-E
A: no. of lecture hours per week
B: no. of tutorial hours per week
C: no. of lab hours per week
D: no. of hours for projects, assignments, fieldwork etc per week
E: no. of hours for preparatory work by a student per week