Parallel Algorithms and Architectures
Code  Completion  Credits  Range  Language 

01PAA  KZ  4  3  Czech 
 Lecturer:
 Tomáš Oberhuber (guarantor)
 Tutor:
 Tomáš Oberhuber (guarantor)
 Supervisor:
 Department of Mathematics
 Synopsis:

This course deals with the parallel data processing. It is important in situations when one processing unit (CPU) is not powerful enough to finish given task in reasonable time. When designing parallel algorithms, good knowledge of the parallel architectures is important. Therefore these architectures are studied as a part of this course too.
 Requirements:

Basic algorithms, programing in C/C++.
 Syllabus of lectures:

1. Introduction
2. Sequential architectures
3. Parallel architectures
4. Communication networks
5. Communication operations
6. Introduction to CUDA
7. OpenMP / MPI
8. Analysis of parallel algorithms
9. Sorting algorithms
10. Matrix algorithms
11. Graph algorithms, MonteCarlo methods 12. Combinatorial search
 Syllabus of tutorials:

1. Programming in CUDA
2. OpenMP / MPI
3. Analysis of parallel algorithms
4. Sorting algorithms
5. Matrix algorithms
6. Graph algorithms, MonteCarlo methods
7. Combinatorial search
 Study Objective:

Knowledge:
Parallel architectures, basic types of parallel architectures, communication in parallel architectures, programming standards OpenMP, MPI, CUDA/OpenCL, sorting algorithms, matrix algorithms, graph algorithms, MonteCarlo methods, analysis of the parallel algorithms.
Skills:
The students will learn how to choose appropriate parallel architecture for given problem, how to design proper parallel algorithm, analyze it and derive its efficiency and how to implement the parallel algorithm.
 Study materials:

Key references:
Grama A., Karypis G., An Introduction to Parallel Computing: Design and Analysis of Algorithms
Recommended references:
CUDA Programming guide
Media and tools:
Computer lab
 Note:
 Timetable for winter semester 2020/2021:
 Timetable is not available yet
 Timetable for summer semester 2020/2021:
 Timetable is not available yet
 The course is a part of the following study plans:

 Matematické inženýrství (elective course)
 Matematická informatika (compulsory course of the specialization)
 Informatická fyzika (elective course)
 Aplikace softwarového inženýrství (elective course)