Instructor: Ricardo Farias
Center of Technology, Building H, Room H304, Office 01
Phone Number: +55 21 2562-8647
http://www.cos.ufrj.br/~rfarias
Abstract
The Graphics Processing Units (GPU), present in most of the current graphics cards,
have a great power of processing. Since 2001 they became programmable, which can
be used for general purpose applications such as, physics simulations, differential
equations solutions, CFD, image processing, among others. In this course we teach
the GPUs architectures, basic API commands, good programming practices to achieve
efficient codes, and memory usage to mask the high memory access latency. Then we
cover efficient methods to distribute work load among the cores of the GPU.
General Information
This is a 3 credit and 45 hour course.
The final grade will be given based on a code implementation and the presentation of its results.
Prerequisites:
It is assumed the student to have strong background on C/C++ programming language.
Lectures:
June, July and August; Wednesday, 8:00 - 12:00. Building H, Room H319 - Lab LUG2.
Tentative Course Topics
GPU Architecture and Parallel Programming Language and Model
Introduction to CUDA
Cuda Threads (SIMT - Single Instruction Multiple Threads)
GPU Memory Models
Texture Mapping
Performance Considerations
GPU Floating Point
Work Distribution on GPUs
Occupancy Calculator
Cases of Study
Text Books
Programming Massively Parallel Processors - A Hands-on Approach, by David B. Kirk and Wen-mei W. Whu (MK - Morgan Kaufmann).
CUDA by Example - An Introduction to General-Purpose GPU Programming, By Jason Sanders and Edward Kandrot (Eddison-Wesley).