Parallel and Distributed Programming
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
MI-PDP.16 | Z,ZK | 5 | 2P+2C | Czech |
- Relations:
- The requirement for course MI-PDP.16 can be fulfilled by substitution with the course MI-PAR.2.
- Course guarantor:
- Lecturer:
- Tutor:
- Supervisor:
- Department of Computer Systems
- Synopsis:
-
Due to the development of cloud, web, and communication technologies and due to the shift of the Moore law into multicore and manycore CPUs, parallel and distributed applications are becoming ubiquitous. Students get acquainted with architectures of parallel and distributed computing systems, their models, theory of interconnection networks, and languages and environments for parallel programming of shared and distributed memory computers. On selected problems, they will learn the techniques of design of efficient and scalable parallel algorithms and methods of performance evaluation of their implementations.
- Requirements:
-
Basic sequential algorithmics, programming, the C/C++programming language, complexity theory, computer architecture, graph theory.
- Syllabus of lectures:
-
1. Introduction into parallel and distributed programming.
2. Introduction into OpenMP.
3. Parallel algorithms for the state space search.
4. Prpgramming and performance tuning in OpenMP.
5. Parallel sorting in OpenMP.
6. Introduction into MPI.
7. Interconnection networks of parallel computers I.
8. Interconnection networks of parallel computers II.
9. Collective communication operations.
10. Parallel reduction and parallel scan. Parallel I/O.
11. Parallel algorithms in OpenMP/MPI I.
12. Parallel algorithms in OpenMP/MPI II.
- Syllabus of tutorials:
-
1. Design and implementation of a sequential algorithm in C/C++.
2. Design and implementation of a parallel algorithm using OpenMP task parallel constructs.
3. Design and implementation of a parallel algorithm using OpenMP data parallel constructs.
4. Design and implementation of a parallel algorithm using MPI on a cluster.
5. Analysis of parallel performance and scalability of the resulting program and writing a technical report.
- Study Objective:
-
Due to the development of cloud, web, and communication technologies and due to the shift of the Moore law into multicore and manycore CPUs, parallel and distributed applications are becoming ubiquitous. Students get acquainted with architectures of parallel and distributed computing systems, their models, theory of interconnection networks, and languages and environments for parallel programming of shared and distributed memory computers. On selected problems, they will learn the techniques of design of efficient and scalable parallel algorithms and methods of performance evaluation of their implementations.
- Study materials:
-
[1] Mattson, T.G. - Sanders, B.A. - Massingill, B.L.: Patterns for Parallel Programming. Addison-Wesley Professional. 2004. 978-0321940780.
[2] Kumar, V. - Grama, A. - Gupta, A. - Karpis, G.: Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms. Benjamin-Cummings. 1994. 0805331700.
[3] Miller, R. - Boxer, L.: Algorithms Sequential and Parallel: A Unified Approach. Pearson Education. 1999. 0130863734.
[4] Wilkinson, B. - Allen, M.: Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. Prentice Hall. 1998. 0136717101.
[5] Jaja, J.: An Introduction to Parallel Algorithms. Addison-Wesley. 1992. 0201548569.
- Note:
- Further information:
- https://courses.fit.cvut.cz/MI-PDP/
- No time-table has been prepared for this course
- The course is a part of the following study plans:
-
- Master branch Knowledge Engineering, in Czech, 2016-2017 (compulsory course in the program)
- Master branch Computer Security, in Czech, 2016-2019 (compulsory course in the program)
- Master branch Computer Systems and Networks, in Czech, 2016-2019 (compulsory course in the program)
- Master branch Design and Programming of Embedded Systems, in Czech, 2016-2019 (compulsory course in the program)
- Master branch Web and Software Engineering, spec. Info. Systems and Management, in Czech, 2016-2019 (compulsory course in the program)
- Master branch Web and Software Engineering, spec. Software Engineering, in Czech, 2016-2019 (compulsory course in the program)
- Master branch Web and Software Engineering, spec. Web Engineering, in Czech, 2016-2019 (compulsory course in the program)
- Master program Informatics, unspecified branch, in Czech, version 2016-2019 (compulsory course in the program)
- Master branch System Programming, spec. System Programming, in Czech, 2016-2019 (compulsory course in the program)
- Master branch System Programming, spec. Computer Science, in Czech, 2016-2017 (compulsory course in the program)
- Master specialization Computer Science, in Czech, 2018-2019 (compulsory course in the program)
- Master branch Knowledge Engineering, in Czech, 2018-2019 (compulsory course in the program)