Parallel programming in OpenMP, MPI, and CUDA - M403065
Title: Paralelní programování v OpenMP, MPI a CUDA
Guaranteed by: Centrum počítačového vzdělávání VŠCHT Praha (599)
Actual: from 2019
Semester: summer
Points: summer s.:2
E-Credits: summer s.:2
Examination process: summer s.:
Hours per week, examination: summer s.:0/10 C [hours/semester]
Capacity: unknown / 20 (unknown)
Min. number of students: unlimited
Language: Czech
Teaching methods: full-time
Level:  
For type: Master's (post-Bachelor)
Note: course can be enrolled in outside the study plan
enabled for web enrollment
Guarantor: Kolafa Jiří prof. RNDr. CSc.
Examination dates   
Annotation -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)
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.
Aim of the course -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)

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

Literature -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)

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)

Teaching methods -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)

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

Requirements to the exam -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)

Interactive evaluation without a formal test or exam

Syllabus -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)

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).

Entry requirements -
Last update: Kolafa Jiří prof. RNDr. CSc. (04.09.2019)

C-language basics and experience with linux.

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
Coursework assessment
Form Significance
Regular attendance 50
Defense of an individual project 50