Lecturer(s)
|
-
Brenkus David, 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.
|