ECE406 (UofR)

ECE 206/406 : GPU Parallel Programming Using C/C++



 Cross-Listings :   CSC 266/466
Semesters :   Fall 2011,  Fall 2012,  Fall 2013,  Fall 2014,  Fall 2015
Lecture :   CSB 523 ,  W   16:50 - 18:05
Lab :   CSB 523 ,  M   16:50 - 18:05 
Prerequisites :   ECE200, ECE216, ECE201/401, or CSC252 recommended. Familiarity with assembly language and C programming language. Instructor approval.
Environment :   CIRC GPU Cluster (Bluehive), Parallel NSight
Description :  

Introduction to general GPU architecture, specifically Nvidia. GPU architectural elements such as global memory, constant memory, texture memory, SP, SM, scratchpad memory, L1$ and L2$ memory, multi-banked memory, register file, and task scheduler are introduced. The role of these structural elements on the software development are taught in detail, with specific emphasis on their impact on the parallel program performance. CUDA (Compute-Unified Device Architecture) programming language is introduced and utilized throughout the entire class.


CUDA programming language is used to achieve parallel sorting, reduction, numeric iterations and fundamental graphics operations, such as ray tracing. CPU/GPU interaction and task splitting is presented in detail to maximize the performance of partially parallel/partially-serial workloads.

Workload :   Five individual project and one group project.