Subject description - A4M39GPU

Summary of Study | Summary of Branches | All Subject Groups | All Subjects | List of Roles | Explanatory Notes               Instructions
A4M39GPU General-Purpose Computing on GPU Extent of teaching:1+2c
Guarantors:  Roles:V Language of
Teachers:  Completion:KZ
Responsible Department:13139 Credits:4 Semester:Z


The goal of the course is to introduce students to basic principles of General-Purpose Computing on Graphics Processing Units (GPGPU). Course gives an overview of architecture and capabilities of modern graphics processing units (GPUs) and covers elementary concepts in parallel programming on GPUs. Students will gain programming skills with the CUDA (or OpenCL) technology and become familiar with basic parallel algorithms (e.g. parallel prefix scan/reduction) that are building blocks for design and implementation of efficient parallel algorithms.

Course outlines:

1. Introduction to general-purpose computing on GPU (architectures, languages, GPU versus CPU).
2. Multithreaded programming.
3. Introduction to CUDA architecture and
basics of its programming.
4. Working with threads and memories in CUDA.
5. Programming for performance - optimizations.
6. Application Case Studies in CUDA.
7. Other high-level languages for GPGPU programming I - OpenCL (Open Computing Language)
8. Other high-level languages for GPGPU programming II - OpenGL Compute Shaders

Exercises outline:

1. Introduction - requirements, evaluation.
2. Examples of simple multithreaded applications.
3. CUDA - compilation workflow, debugging, code examples.
Specification of the individual student projects.
4. CUDA - solution of given tasks I.
5. CUDA - solution of given tasks II.
6. Individual work on projects - consultations I.
7. Individual work on projects - consultations I.
8. Individual student projects checkpoint.
9. OpenCL - compilation workflow, debugging, code examples.
10. OpenCL - solution of given tasks.
11. Individual work on projects - consultations II.
12. Individual work on projects - consultations II.
13. Submitting of individual student projects.
14. Assessment.


1. David B. Kirk, Wen-mei W. Hwu: Programming Massively Parallel Processors: A Hands-on Approach. Morgan Kaufmann, 1st edition, 2010, ISBN-13: 978-0123814722.
2. Jason Sanders, Edward Kandrot: CUDA by Example: An Introduction to General-Purpose GPU Programming. Addison-Wesley Professional, 1st edition, 2010, ISBN-13: 978-0131387683.
3. Aaftab Munshi, Benedict Gaster, Timothy G. Mattson, James Fung, Dan Ginsburg: OpenCL Programming Guide. Addison-Wesley Professional, 2011, ISBN 978-0321749642.
4. Gerassimos Barlas: Multicore and GPU Programming: An Integrated Approach. Morgan Kaufmann, 2014, ISBN 978-0124171374.


Programming in C/C++, linear algebra.


More detailed information about the course (including the requirements for receiving the credit) can be found on the course web page




Subject is included into these academic programs:

Program Branch Role Recommended semester
MPIB Common courses V
MPOI1 Artificial Intelligence V
MPOI5NEW Software Engineering V
MPOI4NEW Computer Graphics and Interaction V
MPOI5 Software Engineering V
MPOI4 Computer Graphics and Interaction V
MPOI3 Computer Vision and Image Processing V
MPOI2 Computer Engineering V

Page updated 18.6.2019 17:53:02, semester: Z,L/2020-1, L/2018-9, Z,L/2019-20, Send comments about the content to the Administrators of the Academic Programs Proposal and Realization: I. Halaška (K336), J. Novák (K336)