Parallel algorithms
Code  Completion  Credits  Range  Language 

B4M35PAG  Z,ZK  6  2P+2S  Czech 
 Lecturer:
 Přemysl Šůcha (guarantor)
 Tutor:
 Přemysl Šůcha (guarantor), Nikolai Antonov, Michal Bouška, Jan Dvořák, István Módos
 Supervisor:
 Department of Control Engineering
 Synopsis:

In the introductory lectures, we will focus on general approaches to design of parallel algorithms and their properties important for understanding the fundamental principles of parallel and distributed algorithms. Subsequently we will talk about fundamental parallel algorithms; typically, constituting cornerstones of algorithms for realworld problems. The laboratory exercise will be aimed at hardware platform commonly used in practice.
 Requirements:

Basic competence in C++ programming and algorithmization.
 Syllabus of lectures:

1. Introduction to parallel computing
2. Principles of parallel and distributed algorithms design
3. Basic communication operations
4. Properties of parallel algorithms
5. Matrix Algorithms
6. Algorithms for Linear Algebra
7. Sorting, TEST
8. Parallel accelerators
9. Graph algorithms I.
10. Graph algorithms II.
11. Combinatorial algorithms
12. Dynamic programming
13. Fast Fourier transform
 Syllabus of tutorials:

1. Introduction to parallel programming, environment setting
2. Introduction to Cpp11 threads
3. Advanced constructs in Cpp11
4. Assignment of the semestral work + homework 1
5. OpenMP  basic constructs
6. OpenMP  vectorization, parallel sort
7. Homework 2, deadline for homework 1
8. Semestral work  consultation
9. OpenMPI  distributed algorithms
10. Homework 3, deadline for homework 2
11. Semestral work  consultation
12. Presentations of semestral works
13. deadline for homework 3, student assessment
 Study Objective:
 Study materials:

[1] Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, Second Edition, Addison Wesley, 2003.
[2] Georg Hager, Gerhard Wellein: Introduction to High Performance Computing for Scientists and Engineers, CRC Press, 2011.
[3] James Reinders, Jim Jeffers: Intel Xeon Phi Coprocessor HighPerformance Programming, Newnes, 2013.
 Note:
 Further information:
 https://cw.fel.cvut.cz/wiki/courses/b4m35pag/start
 Timetable for winter semester 2021/2022:

06:00–08:0008:00–10:0010:00–12:0012:00–14:0014:00–16:0016:00–18:0018:00–20:0020:00–22:0022:00–24:00
Mon Tue Wed Thu Fri  Timetable for summer semester 2021/2022:
 Timetable is not available yet
 The course is a part of the following study plans:

 Open Informatics  Computer Engineering (compulsory course of the specialization)
 Open Informatics  Software Engineering (compulsory course of the specialization)