Skip to main content
Skip header
Terminated in academic year 2019/2020

Programming of Parallel Applications II

Type of study Follow-up Master
Language of instruction Czech
Code 460-4056/01
Abbreviation PPA II
Course title Programming of Parallel Applications II
Credits 5
Coordinating department Department of Computer Science
Course coordinator doc. Ing. Petr Gajdoš, Ph.D.

Subject syllabus

The lecture notes are designed such that they can make the basis for practical exercising on computer labs.

1. Introduction to parallel programming on GPU, a brief history, CUDA
- evolution of graphic processors
- the beginning of programming on GPU, GPGPU
- programmable pipeline
- current architectures

2. CUDA architecture and its integration within standard C++ project
- key features of selected architecture
- decomposition of an algorithm
- hardware vs. software decomposition

3. Threads and kernel functions
- thread and its meaning in GPU
- threads hierarchy, basic thread life cycle, limits
- calling of kernel functions, parameters and restrictions

4. CUDA memories, patterns and usage
- global, shared, and constant memory, registers and texture memory
- allocation and deallocation of memory
- memory alignment
- copying data from RAM to VRAM and wise versa

5. Memory bank conflicts
- access optimization
- suitable data structures

6. Program execution control, distribution af an algorithm
- streams, parallel calling of kernel functions
- synchronization on several levels – threads, blocks, GPU vs. CPU
- program distribution on more GPUs

7. Algorithm performance with respect to its parallelization on GPU
- case study, experiment with more variants of the same program

8. Vectors and matrices
- case study, large data processing
- parallel reduction

9. Support library CUBLAS
- introduction to several support libraries for linear algebra

10. Performance optimization
- case study, image manipulation
- double buffering
- optimization at the level of blocks, registers, etc.

11. Case study
- interesting research topics
- outline of possible solutions
- experiments
- program tuning, debugging with nVidia nSight




Literature

1. Nir Shavit, Maurice Herlihy: The Art of Multiprocessor Programming, Morgan Kaufmann (March 14, 2008) , ISBN-13: 978-0123705914 

2. Edward Kandrot, Jason Sanders: CUDA by Example: An Introduction to General-Purpose GPU Programming, Addison-Wesley Professional; 1 edition (July 29, 2010), ISBN-13: 978-0131387683

3. David Kirk: Programming Massively Parallel Processors: A Hands-on Approach (Applications of GPU Computing Series), Morgan Kaufmann; 1 edition (February 5, 2010), 978-0123814722

Advised literature

1. Timothy G. Mattson: Patterns for Parallel Programming, Addison-Wesley Professional; 1 edition (September 25, 2004), ISBN-13: 978-0321228116