|
Lecturer(s)
|
-
Otta Maxmilián, Ing. Ph.D.
|
|
Course content
|
1. Introduction to the subject, terminology; proces, thread, task; task type overview; Flynn taxonometry; speedup 2. Problem analysis considering parallel data processing; variable types, concurrent memory access 3. Critical section, basic synchronization primitives (lock, mutex, condition variable; spurious wakeup) 4. Advanced synchronization primitives (barrier, monitor, ), atomic variable 5. "Parallel-for" task type and parallelism - work distribution, farmer-worker, static and dynamic scheduling, problem examples 6. "Parallel-reduce" task type and parallelism; problem examples 7. POSIX interface (parallelism and synchronization) 8. OpenMP 9. Distributed computing and parallelism; MPI technology 10. Miscellanous parallelism libraries (parallel STL, Boost) 11. Case study (selected parallelism problems from real software) 12. Introduction to quantum computing
|
|
Learning activities and teaching methods
|
- Contact hours
- 39 hours per semester
- Individual project (40)
- 38 hours per semester
- Preparation for an examination (30-60)
- 30 hours per semester
|
| prerequisite |
|---|
| Knowledge |
|---|
| To know a programming language such as C, Java, Python, C# or any other. |
| To understand basic abstract data types and to know how to correctly use them. |
| To know the basic principles of computer operation - CPU and peripherals. |
| Skills |
|---|
| To be able to analyze and decompose a given problem, propose algorithmic solution and implement it. |
| Competences |
|---|
| N/A |
| learning outcomes |
|---|
| Knowledge |
|---|
| To know basic principles and models of parallel programming. |
| To have a general knowledge about parallel technologies and implementation techniques. |
| To know basic and selected advanced synchronisation primitives and principles of their use. |
| Skills |
|---|
| To be able to analyze a problem for later parallelisation and to select appropriate techniques. |
| To be able to write a parallel code for data processing using selected technology. |
| To be able to evaluate parallel code correctness and effectivity. |
| Competences |
|---|
| N/A |
| teaching methods |
|---|
| Knowledge |
|---|
| Lecture |
| Lecture with visual aids |
| Skills |
|---|
| Individual study |
| Competences |
|---|
| Lecture supplemented with a discussion |
| assessment methods |
|---|
| Knowledge |
|---|
| Written exam |
| Oral exam |
| Skills |
|---|
| Oral exam |
| Competences |
|---|
| Oral exam |
|
Recommended literature
|
-
Balaji Pavan. Programming Models for Parallel Computing. MIT Press Ltd., 2015. ISBN 978-0262528818.
-
Gebali Fayez. Gebali Fayez. Algorithms and Parallel Computing. Wiley, 2011. ISBN 978-0470902103.
-
Roman Trobec, Boštjan Slivnik, Patricio Bulić, Borut Robič. Introduction to Parallel Computing. Springer Nature Switzerland, 2018. ISBN 978-3-319-98832-0.
-
Williams Anthony. C++ Concurrency in Action: Practical Multithreading.. Manning Publishing, 2012. ISBN 978-1933988771.
|