CEN461/ CEN660 : GPU Architecture and Programming



 Cross-Listings :   CSI445/ CSI660
Semesters :   Fall 2016, Fall 2018
Lecture :   ES0139 ,  W   17:45 - 19:05
Lab :   ES0139 ,  M   17:45 - 19:05
Prerequisites :   CEN200, CEN/CSI404, or equivalent. Familiarity with assembly language and C programming language. Instructor approval.
Environment :   SUNY Albany GPU Cluster (CEASHPC), Parallel NSight, Eclipse IDE.
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.
Textbook :   T. Soyata,  "GPU Parallel Program Development Using CUDA," Taylor and Francis (CRC Publishing), pp. 1-476, ISBN 978-1498750752, Feb 2018.    
Buy Textbook :   BUY THE TEXTBOOK