Main page | Study Branches/Specializations | Groups of Courses | All Courses | Roles                Instructions

A course is the basic teaching unit, it's design as a medium for a student to acquire comprehensive knowledge and skills indispensable in the given field. A course guarantor is responsible for the factual content of the course.
For each course, there is a department responsible for the course organisation. A person responsible for timetabling for a given department sets a time schedule of teaching and for each class, s/he assigns an instructor and/or an examiner.
Expected time consumption of the course is expressed by a course attribute extent of teaching. For example, extent = 2 +2 indicates two teaching hours of lectures and two teaching hours of seminar (lab) per week.
At the end of each semester, the course instructor has to evaluate the extent to which a student has acquired the expected knowledge and skills. The type of this evaluation is indicated by the attribute completion. So, a course can be completed by just an assessment ('pouze zápočet'), by a graded assessment ('klasifikovaný zápočet'), or by just an examination ('pouze zkouška') or by an assessment and examination ('zápočet a zkouška') .
The difficulty of a given course is evaluated by the amount of ECTS credits.
The course is in session (cf. teaching is going on) during a semester. Each course is offered either in the winter ('zimní') or summer ('letní') semester of an academic year. Exceptionally, a course might be offered in both semesters.
The subject matter of a course is described in various texts.

MI-PDP.16 Parallel and Distributed Programming Extent of teaching: 2P+2C
Instructor: Completion: Z,ZK
Department: 18104 Credits: 5 Semester: L

Annotation:
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.

Lecture syllabus:
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.

Seminar syllabus:
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.

Literature:
[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.

Requirements:
Basic sequential algorithmics, programming, the C/C++programming language, complexity theory, computer architecture, graph theory.

Tento předmět obsahově navazuje na bakalářský předmět Algoritmy a grafy 1
https://courses.fit.cvut.cz/MI-PDP/

The course is also part of the following Study plans:
Study Plan Study Branch/Specialization Role Recommended semester
NI-TI.2018 Computer Science PP 2
MI-ZI.2016 Knowledge Engineering PP 2
MI-ZI.2018 Knowledge Engineering PP 2
MI-SP-TI.2016 System Programming PP 2
MI-SP-SP.2016 System Programming PP 2
MI-SPOL.2016 Unspecified Branch/Specialisation of Study PP 2
MI-WSI-WI.2016 Web and Software Engineering PP 2
MI-WSI-SI.2016 Web and Software Engineering PP 2
MI-WSI-ISM.2016 Web and Software Engineering PP 2
MI-NPVS.2016 Design and Programming of Embedded Systems PP 2
MI-PSS.2016 Computer Systems and Networks PP 2
MI-PB.2016 Computer Security PP 2


Page updated 23. 4. 2024, semester: Z/2024-5, Z,L/2022-3, Z/2019-20, Z,L/2021-2, Z,L/2023-4, L/2019-20, Z,L/2020-1, Send comments to the content presented here to Administrator of study plans Design and implementation: J. Novák, I. Halaška