SubjectsSubjects(version: 954)
Course, academic year 2021/2022
Parallel programming in OpenMP, MPI, and CUDA - M403065
Title: Paralelní programování v OpenMP, MPI a CUDA
Guaranteed by: Department of Physical Chemistry (403)
Faculty: Faculty of Chemical Engineering
Actual: from 2021
Semester: summer
Points: summer s.:2
E-Credits: summer s.:2
Examination process: summer s.:
Hours per week, examination: summer s.:0/10, C [HS]
Capacity: unknown / 20 (unknown)
Min. number of students: unlimited
State of the course: taught
Language: Czech
Teaching methods: full-time
Teaching methods: full-time
Note: course can be enrolled in outside the study plan
enabled for web enrollment
Guarantor: Kolafa Jiří prof. RNDr. CSc.
Class: Kurz CŽV
This subject contains the following additional online materials
Annotation -
After general introduction to models of parallel programming, we will cover main rules and tricks leading to efficient parallelization of various tasks. In the second part of the course, we will focus on a particlar architecture, namely graphics processing units NVIDIA. We will cover CUDA software (incl. the needed basics of laguage C++) and solve exercises focussing on the field of computational chemistry.
Last update: Kolafa Jiří (04.09.2019)
Aim of the course -

Students will understand parallelization methods and will be able to write a simple CUDA-based code.

Last update: Kolafa Jiří (04.09.2019)
Literature -

J. Sanders, E. Kandrot: CUDA by example - An Introdiction to General-Purpose GPU Programming (Adisson-Wesley 2011, 978-0-13-138768-3)

D. B. Kirk, W-m. W. Hwu: Programming Massively Parallel Processors - A Hands-on Approach (Elsevier 2010, 978-0-12-381472-2)

Last update: Kolafa Jiří (04.09.2019)
Teaching methods -

talks(30%), exercise(30%), project (40%)

Last update: Kolafa Jiří (04.09.2019)
Requirements to the exam -

Interactive evaluation without a formal test or exam

Last update: Kolafa Jiří (04.09.2019)
Syllabus -

1. History: D825, transputers. Unix world: MIMD threads. Platforms (MPI etc.). SIMD and GPUs. Processors, cores, threads.

2. Algorithmization: Linear algebra (dense, sparse). Grid methods (PDE). MC and MD: domain decomposition, linked-cell list. Graphics: rendering.

3. C and C++ review.

4. Message passing and threads: OpenMP, MPI.

5. GPU - architecture.

6. CUDA basics (NVIDIA Teaching Kit modules 1,2).

7. CUDA Parallelism Model, memory (NTK modules 3-6).

8. Parallel Computation Patterns (NTK modules 7-9).

9. Floating point (NTK module 12).

10. Case study: Electrostatic potential (NTK Module 16).

Last update: Kolafa Jiří (04.09.2019)
Entry requirements -

C-language basics and experience with linux.

Last update: Kolafa Jiří (04.09.2019)
Teaching methods
Activity Credits Hours
Práce na individuálním projektu 0.2 5
Účast na seminářích 0.2 5
0 / 2 10 / 56