The course covers the basics of parallel programming and distributed processing of computationally intensive tasks and procedures. The aim of the course is to analyze the process communication and time complexity of process subtasks with respect to design the procedures with optimized parallel performance. Implementation of the studied methods is predominantly in the JAVA programming language.
Last update: Cejnar Pavel (30.07.2013)
Předmět je zaměřen na problematiku paralelního programování a distribuovaného zpracování dílčích procedur. Součástí předmětu je i rozbor komunikace a časové náročnosti jednotlivých procesů a odhad výkonnosti navržených paralelních procedur. Implementace studovaných metod je v programovacím jazyku JAVA.
Last update: Cejnar Pavel (30.07.2013)
Aim of the course -
Students will be able to:
Distinguish whether it is easy to make given task or procedure parallel.
Design effective parallel procedures.
Propose other possible acceleration of calculations for tasks with hard parallelization.
Last update: Cejnar Pavel (30.07.2013)
Předmět je zaměřen na problematiku paralelního programování a distribuovaného zpracování dílčích procedur. Součástí předmětu je i rozbor komunikace a časové náročnosti jednotlivých procesů a odhad výkonnosti navržených paralelních procedur. Implementace studovaných metod je v programovacím jazyku JAVA.
Last update: Cejnar Pavel (30.07.2013)
Literature -
R: Tvrdík, P.: Parallel Algorithms and Computing. ČVUT Praha, 2010. ISBN 978-80-01-04333-2.
A: Lea, D.: Concurrent Programming in Java: Design Principles and Pattern (2nd Edition). Prentice Hall, 1999. ISBN 978-0-201-31009-2.
A: Eckel, B.: Thinking in Java. Prentice Hall, 2006. ISBN 978-0131872486.
A: Patterson, A. D., Henessy, L. J.: Computer Organization and Design, Fourth Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design).Morgan Kaufmann, 2011. ISBN 978-0123747501.
A: Wilkinson, B., Allen, M.: Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. Prentice Hall, 1999.ISBN 0-13-671710-1.
D: Wilkinson, B., Allen, M.: Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers. Prentice Hall, 1999.0-13-671710-1.
D: Dvořák, V.: Architektura a programování paralelních systémů. Učební text FIT VUT v Brně, 2004. 80-214-2608-X.
Last update: Cejnar Pavel (25.04.2018)
Teaching methods -
Lectures and courses.
Last update: Cejnar Pavel (30.07.2013)
Přednášky a cvičení.
Last update: Cejnar Pavel (13.11.2012)
Syllabus -
1. Software optimization of computer procedures. Distributed and parallel data processing. Parallelization on multicore computer processors.
2. Simple synchronization operations and synchronization blocking primitives.
3. Synchronization model problems. Synchronization support in programming language.
4. Algorithms asymptotic sequential and parallel time and space complexity and their application.
5. PRAM parallel computation model and basic terms of parallel computation theory. Recursion procedures and their parallelization. Parallel matrix multiplication.
6. Parallel sort algorithms.
7. Parallel prefix sum algorithm and its applications (RadixSort, parallel addition, SPPS).
8. Parallelization of graph algorithms and linear algebra algorithms. Available parallel implementations of mathematical libraries.
9. Distributed data processing and communications. Remote procedures call.
10. Current hardware architectures for parallel data computation.
11. CASE STUDY: distributed and parallel data processing in MATLAB.
12. CASE STUDY: distributed and parallel data processing in C++ in Unix environment.
13. CASE STUDY: distributed and parallel data processing using GPU.
14. Advanced parallelization techniques. Distributed and parallel processing optimization.
Last update: Cejnar Pavel (30.07.2013)
1. Softwarové možnosti optimalizace úloh. Distribuované a paralelní zpracování dat. Paralelizace úloh na vícejádrových procesorech.
2. Jednoduché synchronizační operace a blokující synchronizační primitiva.
3. Modelové problémy synchronizace. Podpora synchronizace v programovacím jazyku.
4. Definice základních pojmů z asymptotické paralelní složitosti a jejich aplikace.
5. Výpočetní model PRAM. Definice základních pojmů z teorie paralelních výpočtů. Složitost rekurzivního zpracování a paralelizace rekurzivních úloh. Paralelizace násobení matic.
6. Paralelní třídící algoritmy.
7. Algoritmus paralelního prefixového součtu a jeho aplikace (RadixSort, paralelní sčítání, SPPS).