Course detail
Applications of Parallel Computers
FIT-PDDAcad. year: 2025/2026
The course gives an overview of usable parallel platforms and models of programming, mainly shared-memory programming (OpenMP), message passing (MPI) and data-parallel programming (CUDA, OpenCL). A parallelization methodology is completed by performance studies and applied to a particular problem. The emphasis is put on practical aspects and implementation.
Language of instruction
Czech, English
Mode of study
Not applicable.
Guarantor
Department
Entry knowledge
Types of parallel computers, programming in C/C++, basic numerical methods
Rules for evaluation and completion of the course
Defence of a software project based on a variant of parallel programming.
Aims
To clarify possibilities of parallel programming on multi-core processors, on clusters and on GP GPUs. View over synchronization and communication techniques. Get to know a method of parallelization and performance prediction of selected real-world applications, the design of correct programs and the use parallel computing in practice.
Topics for the state doctoral exam (SDZ):
To learn how to parallelize various classes of problems and predict their performance. To be able to utilize parallelism and communication at thread- and process level. To get acquainted with state-of-the-art standard interfaces, language extensions and other tools for parallel programming (MPI, OpenMP). Write and debug a parallel program for a selected task.
Parallel architectures with distributed and shared memory, programming in C/C++ with MPI and OpenMP, GPGPU, parallelization of basic numerical methods.
Topics for the state doctoral exam (SDZ):
- Indicators and laws of parallel processing, function of constant efficiency, scalability.
- Parallel processing in OpenMP, SPMD, loops, sections, tasks and synchronization primitives.
- Architectures with shared memory, UMA, NUMA, cache coherence protocols.
- Blocking and non-blocking pair-wise communications in MPI.
- Collective communications in MPI, parallel input-output.
- Architecture of superscalar processors, algorithms for out-of-order instruction execution.
- Data parallelism SIMD and SIMT, HW implementation and SW support.
- Architecture of graphics processing units, differences from superscalar CPUs.
- Programming language CUDA, thread and memory models..
To learn how to parallelize various classes of problems and predict their performance. To be able to utilize parallelism and communication at thread- and process level. To get acquainted with state-of-the-art standard interfaces, language extensions and other tools for parallel programming (MPI, OpenMP). Write and debug a parallel program for a selected task.
Parallel architectures with distributed and shared memory, programming in C/C++ with MPI and OpenMP, GPGPU, parallelization of basic numerical methods.
Study aids
Not applicable.
Prerequisites and corequisites
- recommended prerequisite
Practical Parallel Programming
Basic literature
Not applicable.
Recommended reading
http://www.cs.berkeley.edu/~demmel/cs267_Spr13/
David Patterson John Hennessy: Computer Organization and Design MIPS Edition, Morgan Kaufmann, 2013, s. 800, ISBN: 978-0-12-407726-3
Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2017, s. 540, ISBN: 978-0-12-811986-0
David Patterson John Hennessy: Computer Organization and Design MIPS Edition, Morgan Kaufmann, 2013, s. 800, ISBN: 978-0-12-407726-3
Kirk, D., and Hwu, W.: Programming Massively Parallel Processors: A Hands-on Approach, Elsevier, 2017, s. 540, ISBN: 978-0-12-811986-0
Classification of course in study plans
- Programme DIT Doctoral 0 year of study, winter semester, compulsory-optional
- Programme DIT Doctoral 0 year of study, winter semester, compulsory-optional
- Programme DIT-EN Doctoral 0 year of study, winter semester, compulsory-optional
- Programme DIT-EN Doctoral 0 year of study, winter semester, compulsory-optional
Type of course unit
Lecture
39 hod., optionally
Teacher / Lecturer
Syllabus
- Parallel computer architectures, performance measures and their prediction
- Patterns for parallel programming
- Synchronization and communication techniques.
- Shared variable programming with OpenMP
- Message-passing programming with MPI
- Data parallel programming with CUDA/OpenCL
- Examples of task parallelization and parallel applications
Guided consultation in combined form of studies
26 hod., optionally
Teacher / Lecturer