PV197 GPU Programming

Faculty of Informatics
Autumn 2024
Extent and Intensity
1/1/0. 2 credit(s) (plus extra credits for completion). Recommended Type of Completion: zk (examination). Other types of completion: k (colloquium).
Teacher(s)
doc. RNDr. Jiří Filipovič, Ph.D. (lecturer)
doc. RNDr. Petr Holub, Ph.D. (assistant)
RNDr. Jiří Matela, Ph.D. (assistant)
Guaranteed by
doc. RNDr. Jiří Filipovič, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Prerequisites
C/C++ programming (PB111, PB160, PB161, PB071, or similar), familiarity with CPU architecture, and parallelization of algorithms (IB109).
Course Enrolment Limitations
The course is also offered to the students of the fields other than those the course is directly associated with.
fields of study / plans the course is directly associated with
there are 34 fields of study the course is directly associated with, display
Course objectives
The goal of this course is to explain how to use GP GPU for general computation.
Learning outcomes
After the end of the course students should: describe the architecture, programming model and optimization for GPUs; explain GPU implementation of several broadly used algorithms; create GPUs implementation of given computational tasks; judge the suitability of given computational problem for GPU acceleration.
Syllabus
  • Introduction: motivation for GPU programming, GPU architecture, overview of parallelism model, basics of CUDA, first demonstration code
  • GPU hardware and parallelism: detailed hardware description, synchronization, calculation on GPU -- rate of instruction processing, arithmetic precision, example of different approaches to matrix multiplication -- naive versus block-based
  • Performance of GPUs: memory access optimization, instructions performance, an example of matrix transposition
  • CUDA, tools and libraries: detailed description of CUDA API, compilation using nvcc, debugging, profiling, basic libraries, project assignment
  • Optimization: general rules for algorithm design for GPU, revision of matrix multiplication, parallel reduction
  • Parallelism in general: problem decomposition, dependence analysis, design analysis, parallel patterns
  • Metrics of efficiency for GPU: parallel GPU and CPU usage, metrics for performance prediction of GPU code, demonstration using graphics algorithms, principles of performance measurement
  • OpenCL: introduction to OpenCL, differences comparing to CUDA, exploiting OpenCL for hardware not accessible from CUDA
  • Case studies 1: Calculation of force field of molecule, automatic optimization of memory-bound functions
  • Case studies 2: Acceleration of image and video compression
  • Case studies 3: LTL model checking acceleration
  • Discussion of a project, presentation of best-achieved results, presentation of 3 best solutions by authors, final discussion
Teaching methods
Lectures, reading of recommended literature, solving and programming assignments.
Assessment methods
Scores for assignment solutions: 50% for the project, up to 30% bonus for the performance of the solution. Oral exam after all the lectures: 50%. In order to pass successfully, the score for the oral exam must be at least half of maximum.
Language of instruction
English
Further comments (probably available only in Czech)
The course is taught annually.
The course is taught: every week.
The course is also listed under the following terms Autumn 2009, Autumn 2010, Autumn 2011, Autumn 2012, Autumn 2013, Autumn 2014, Autumn 2015, Autumn 2016, Autumn 2017, Autumn 2018, Autumn 2019, Autumn 2020, Autumn 2021, Autumn 2022, Autumn 2023.
  • Enrolment Statistics (recent)
  • Permalink: https://is.muni.cz/course/fi/autumn2024/PV197