PV197 GPU Programming

Faculty of Informatics
Autumn 2018
Extent and Intensity
1/1. 2 credit(s) (plus extra credits for completion). Type of Completion: zk (examination).
Teacher(s)
doc. RNDr. Jiří Filipovič, Ph.D. (lecturer)
prof. RNDr. Jiří Barnat, Ph.D. (assistant)
doc. RNDr. Petr Holub, Ph.D. (assistant)
RNDr. Jiří Matela, Ph.D. (assistant)
Guaranteed by
doc. RNDr. Eva Hladká, Ph.D.
Department of Computer Systems and Communications – Faculty of Informatics
Supplier department: Department of Computer Systems and Communications – Faculty of Informatics
Timetable
Thu 14:00–15:50 B410
Prerequisites
IB109 Design of Parallel Systems
C programming basics, familiarity with CPU architecture and parallelization of algorithms.
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
Course objectives
After the end of the course students should: describe 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 perormance, 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 project, presentation of best achieved results, presentation of 3 best solutions by authors, final discussion
Literature
  • MATTSON, Timothy G, Beverly A. SANDERS and Berna MASSINGILL. Patterns for Parallel Programming. Boston: Addison-Wesley, 2005, xiii, 355. ISBN 0321228111. info
  • The data parallel programming model : foundations, HPF realization, and scientific applications. Edited by Guy-René Perrin - Alain Darte. Berlin: Springer, 1996, xv, 284. ISBN 3540617361. info
  • GPU gems 3. Edited by Hubert Nguyen. Upper Saddle River, NJ: Addison-Wesley, 2007, l, 942. ISBN 9780321515261. info
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 performance of the solution. Oral exam after all the lectures: 50%. In order to pass successfully, score for the oral exam must be at least half of maximum.
Language of instruction
English
Further comments (probably available only in Czech)
Study Materials
The course is taught annually.
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 2019, Autumn 2020, Autumn 2021, Autumn 2022, Autumn 2023, Autumn 2024.
  • Enrolment Statistics (Autumn 2018, recent)
  • Permalink: https://is.muni.cz/course/fi/autumn2018/PV197