Overview
The Parallel Computing lecture covers software and hardware-related topics of parallel systems, algorithms, and
application design. In addition to learning theoretical foundations, students will get hands-on experience with selected
parallel computing topics.
Name | Value |
---|
Contact | Ramin Yahyapour |
Venue | |
Time | |
Language | English |
Module | M.Inf.1232 |
SWS | 4 |
ECTS | 6 |
Presence time | 56h |
Independent study | 124h |
Learning Objectives
Successfully completing the lecture, students are able to
- define and describe the benefit of parallel computing and identify the role of software and hardware in parallel
computing
- specify the Flynn classification of parallel computers (SISD, SIMD, MIMD)
- analytically evaluate the performance of parallel computing approaches (Scaling/Performance models)
- understand the different architecture of parallel hardware and performance improvement approaches (e.g., caching and
cache coherence issues, pipeline, etc.)
- know and define the interconnects and networks and their role in parallel computing
- architecture of parallel computing (MPP, Vector, Shared memory, GPU, Many-Core, Clusters, Grid, Cloud)
- design and develop parallel software using a systematic approach
- generate parallel computing algorithms and development environments (i.e. shared memory and distributed memory
parallel programming)
- write parallel algorithms/programs using different paradigms and environments (e.g., POSIX Multi-threaded programming,
OpenMP, MPI, OpenCL/CUDA, MapReduce, etc.)
- understand and develop sample parallel programs using different paradigms and development environments (e.g., shared
memory and distributed models) expose to some applications of Parallel Computing
Prerequisites
None.
Recommended Prerequisites
- Computer architecture
- Basic knowledge of computer networks and topologies
- Data structures and algorithms
- Programming in C(/C++)
Examination
Type: Written exam (90 minutes) or oral examination, 20 minutes, with grade
Expectation on the examinee
Profund knowledge of:
- Parallel programming
- Shared Memory Parallelism
- Distributed Memory Parallelism
- Single Instruction Multiple Data (SIMD)
- Multiple Instruction Multiple Data (MIMD)
- Hypercube
- Parallel interconnects and networks
- Pipelining
- Cache Coherence
- Parallel Architectures
- Parallel Algorithms
- OpenMP
- MPI
- Multi-Threading (pthreads)
- Heterogeneous Parallelism (GPGPU, OpenCL/CUDA).
Recommended Reading
- An Introduction to Parallel Programming, Peter S. Pacheco, Morgan Kaufmann(MK), 2011, ISBN: 978-0-12-374260-5.
- Designing and Building Parallel Programs, Ian Foster, Addison-Waesley, 1995, ISBN 0-201-57594-9 (Available online).
- Advanced Computer Architecture: Parallelism, Scalability, Programmability, Kai Hwang, Int. Edition, McGraw Hill, 1993,
ISBN: 0-07-113342-9.
- In addition to the mentioned text book, tutorial and survey papers will be distributed in some lectures as extra
reading material.