FI:PV197 GPU Programming - Course Information
PV197 GPU ProgrammingFaculty of Informatics
- Extent and Intensity
- 1/1. 2 credit(s) (plus extra credits for completion). Type of Completion: zk (examination).
- RNDr. Jiří Filipovič, Ph.D. (lecturer)
prof. RNDr. Jiří Barnat, Ph.D. (lecturer)
doc. RNDr. Petr Holub, Ph.D. (lecturer)
RNDr. Jiří Matela, Ph.D. (assistant)
- Guaranteed by
- prof. RNDr. Mojmír Křetínský, CSc.
Department of Computer Science - Faculty of Informatics
- Mon 14:00–15:50 A107
- 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 the course is directly associated with
- there are 42 fields of study the course is directly associated with, display
- Course objectives
- The class focuses on programming of graphics processors (GPU), that allow achieving computing power unavailable for traditional universal processors, provided parallelism of GPUs is properly utilized. Students will learn architecture of GPUs as well as CUDA programming model. Basic design patterns suitable for implementation on GPUs will be analyzed. The students will prepare solutions to given problems using GPUs. At the end of the class, the successful students will understand SIMD/SIMT programming model and its usage on GPUs. They will be able to design parallelization of algorithms suitable for GPU and implement them using CUDA programming model.
- 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 mapped 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
- 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
- Further comments (probably available only in Czech)
- Study Materials
The course is taught annually.