Course Description
Graphical Processing Units (GPUs) include hundreds of small processing units, called pipelines, which makes them suitable for running parallel applications with great efficiency. GPUs are rapidly growing in performance and programmability offering application potential for time consuming computing problems.This course intends to provide knowledge and practical experience in developing applications with massively parallel computing resources. Students will be able to design, develop and optimize software on GPUs. NVIDIA processors and the CUDA programming tool will be used in the lab section of the course. A good knowledge of C programming is required, since all the programming will use environments building on C.
Course Objectives
-
To provide awareness about GPUs and GPU programming
-
To introduce CUDA for parallel computing on the Graphics Processing Unit (GPU)
-
To introduce OpenCL
-
To introduce knowledge about parallel programming
Learning Outcomes
-
Students will have a theoretical knowledge and practical experiences in CUDA for GPU computing
-
Students will be able to solve and optimize time consuming computing problems on GPUs
-
Students will have in-depth knowledge about parallel programming
-
Students will be able to compare and contrast GPU programming environments
Teaching Policy
3 hours of lecturing per week. Attendance to laboratories is compulsory.
C/C++ or Matlab programming background is essential.
Textbooks
D. Kirk and W. Hwu |
Programming Massively Parallel Processors |
Morgan Kaufmann |
978-0-12-381472-2 |
J. Sanders and E. Kandrot |
CUDA by Example: An Introduction to General-Purpose GPU Programming |
Pearson |
978-0-13-138768-3 |