Skip to main content
Skip header

Introduction to programming of HPC systems

* Exchange students do not have to consider this information when selecting suitable courses for an exchange stay.

Course Unit Code9600-1028/01
Number of ECTS Credits Allocated6 ECTS credits
Type of Course Unit *Compulsory
Level of Course Unit *Second Cycle
Year of Study *First Year
Semester when the Course Unit is deliveredSummer Semester
Mode of DeliveryFace-to-face
Language of InstructionCzech
Prerequisites and Co-Requisites Course succeeds to compulsory courses of previous semester
Name of Lecturer(s)Personal IDName
MEC059Ing. Ondřej Meca, Ph.D.
JAN0369Mgr. Branislav Jansík, Ph.D.
RIH0042doc. Ing. Lubomír Říha, Ph.D.
Summary
Learning Outcomes of the Course Unit
The course will provide the basics of creating parallel applications, including parallel processing and optimization techniques, depending on the target parallel architecture.

Student will be able to:
- actively use the new concepts of parallel programming
- analyze the algorithm, propose a suitable decomposition for its parallelization
- analyze the efficiency of the parallelization design
- implement and optimize algorithm using processor kernel-level parallelization, using multi-core (multicore (CPU) and manycore (MIC) computing capabilities) through OpenMP directives and using multiple computational computing power through MPI inter-process communications.
Course Contents
1. Introduction to HPC, Parallel Programming and Architectures of Current Microprocessors
2. Decomposition algorithms for parallelization, oriented acyclic graphs
3. Optimization techniques for instruction-level parallelization, explicit directives, and instruction-level parallelization
4. Programming parallel threads using OpenMP directives
5. Basic inter-process communication with MPI library, hybrid programming
6. Methods of analytical modeling of the effectiveness of parallel algorithms
Recommended or Required Reading
Required Reading:
1. Michael McCool (Author), James Reinders (Author), Arch Robison (Author), Structured Parallel Programming: Patterns for Efficient Computation Paperback – June 25, 2012
2. http://mpi-forum.org, MPI: A Message-Passing Interface Standard
3. http://openmp.org, OpenMP Application Program Interface
1. Michael McCool (Author), James Reinders (Author), Arch Robison (Author), Structured Parallel Programming: Patterns for Efficient Computation Paperback – June 25, 2012
2. http://mpi-forum.org, MPI: A Message-Passing Interface Standard
3. http://openmp.org, OpenMP Application Program Interface
Recommended Reading:
1. http://software.intel.com, Optimization and Performance Tuning for Intel® Xeon Phi™ Coprocessors - Part 1: Optimization Essentials
2. Intel® 64 and IA-32 Architectures Optimization Reference Manual
3. High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches Paperback – November 17, 2014 by James Reinders (Author), James Jeffers (Author)
1. http://software.intel.com, Optimization and Performance Tuning for Intel® Xeon Phi™ Coprocessors - Part 1: Optimization Essentials
2. Intel® 64 and IA-32 Architectures Optimization Reference Manual
3. High Performance Parallelism Pearls: Multicore and Many-core Programming Approaches Paperback – November 17, 2014 by James Reinders (Author), James Jeffers (Author)
Planned learning activities and teaching methods
Lectures, Seminars, Tutorials
Assesment methods and criteria
Task TitleTask TypeMaximum Number of Points
(Act. for Subtasks)
Minimum Number of Points for Task Passing
ExaminationExamination100 51