Programming in CUDA
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
MI-PRC | Z,ZK | 4 | 2P+1C | Czech |
- Course guarantor:
- Lecturer:
- Tutor:
- Supervisor:
- Department of Computer Systems
- Synopsis:
-
The students gain a good overview of present parallel architectures in GPUs. Students also get hands-on experience with programming these systems.
- Requirements:
-
Programming in C/C++, parallel algorithms, computer architectures.
- Syllabus of lectures:
-
1. Introduction, system of classification
2. Multithreaded programming
3. Introduction to GPGPU
4. Introduction of CUDA API
5. CUDA datatypes
6. Synchronization of threads and blocks
7. Textures and streams
8. CUDA optimization - SIMT architecture, coalesced memory access pattern
9. CUDA optimization - transformations of source codes
10. CUDA API libraries
11. CUDA and other programming languages
12. Overview of other API for GPGPU
13. Final prezentation, conclusions
- Syllabus of tutorials:
-
1. Introduction, assigning projects to students
2. Serial project presentation
3. CUDA code compilation, linking CUDA libraries
4. Debugging and profiling tools
5. Project consultation
6. CUDA project presentation, assessment
- Study Objective:
-
Nowadays, the importance of parallel computing rapidly grows due to the fact that Moore's law moved to parallelization of processors, GPGPU systems are becoming a commodity, and even any PC end-user meets these systems. These trends bring challenges for SW developers, since common applications should be optimally parallelized. The aim is to teach students tools and methods for programming GPGPU systems.
- Study materials:
-
J. Sanders, E. Kandrot ''CUDA by Example: An Introduction to General-Purpose GPU Programming''
David B. Kirk, Wen-mei W. Hwu: Programming Massively Parallel Processors: A Hands-on Approach. 1st ed., Morgan Kaufmann, 2010.
- Note:
- Further information:
- https://courses.fit.cvut.cz/MI-PRC/
- No time-table has been prepared for this course
- The course is a part of the following study plans:
-
- Master branch Knowledge Engineering, in Czech, 2016-2017 (elective course)
- Master branch Computer Security, in Czech, 2016-2019 (elective course)
- Master branch Computer Systems and Networks, in Czech, 2016-2019 (elective course)
- Master branch Design and Programming of Embedded Systems, in Czech, 2016-2019 (elective course)
- Master branch Web and Software Engineering, spec. Info. Systems and Management, in Czech, 2016-2019 (elective course)
- Master branch Web and Software Engineering, spec. Software Engineering, in Czech, 2016-2019 (elective course)
- Master branch Web and Software Engineering, spec. Web Engineering, in Czech, 2016-2019 (elective course)
- Master program Informatics, unspecified branch, in Czech, version 2016-2019 (elective course)
- Master branch System Programming, spec. System Programming, in Czech, 2016-2019 (elective course)
- Master branch System Programming, spec. Computer Science, in Czech, 2016-2017 (elective course)
- Master specialization Computer Science, in Czech, 2018-2019 (elective course)
- Master branch Knowledge Engineering, in Czech, 2018-2019 (elective course)