Subject description - B4M39GPU

Summary of Study | Summary of Branches | All Subject Groups | All Subjects | List of Roles | Explanatory Notes               Instructions
B4M39GPU General-Purpose Computing on GPU
Roles:  Extent of teaching:1P+2C
Department:13139 Language of teaching:CS
Guarantors:Sloup J. Completion:KZ
Lecturers:Sloup J. Credits:4
Tutors:Sloup J. Semester:Z

Web page:

https://cw.fel.cvut.cz/wiki/courses/B4M39GPU

Anotation:

The course aims to introduce students to basic principles of General-Purpose Computing on Graphics Processing Units (GPGPU). The course gives an overview of the 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 designing and implementing efficient parallel algorithms.

Course outlines:

1. Introduction to general-purpose computing on GPU (architectures, languages, GPU versus CPU).
2. Introduction to CUDA architecture and basics of its programming.
3. CUDA - working with threads and memories, memory hierarchy.
4. CUDA - implementation of basic parallel patterns (reduction, prefix sum).
5. CUDA - programming for performance - optimizations.
6. CUDA - extensions - dynamic parallelism, cooperative groups, unified memory, graph.
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. CUDA - compilation workflow, debugging, code examples. Specification of the individual student projects.
3. CUDA - solving simple examples.
4. CUDA - solution of given tasks I.
5. CUDA - solution of given tasks II.
6. CUDA - solution of given tasks III.
7. Individual work on projects - consultations I.
8. OpenCL - compilation workflow, debugging, code examples.
9. OpenCL - solution of given tasks IV.
10. Individual work on projects - consultations II.
11. Individual work on projects - consultations II.
12. Submitting of individual student projects.
13. Presentation of projects. Assessment.

Literature:

1. Wen-mei W. Hwu, David B. Kirk, Izzat El Hajj: Programming Massively Parallel Processors: A Hands-on Approach. 4th ed., Elsevier, 2022, https://doi.org/10.1016/C2020-0-02969-5.
2. Jason Sanders, Edward Kandrot: CUDA by Example: An Introduction to General-Purpose GPU Programming. 1st ed., Addison-Wesley Professional, 2010, ISBN 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.

Requirements:

Programming in C/C++, linear algebra.

Note:

More detailed information about the course (including the requirements for receiving the credit) can be found on the course web page http://cent.felk.cvut.cz/courses/GPU.

Keywords:

OpenCL, CUDA

Subject is included into these academic programs:

Program Branch Role Recommended semester


Page updated 22.6.2025 05:52:51, semester: L/2026-7, L/2024-5, Z/2026-7, Z,L/2025-6, Send comments about the content to the Administrators of the Academic Programs Proposal and Realization: I. Halaška (K336), J. Novák (K336)