Course Contents

Computer Architecture: Flynn’s Taxonomy, Basic five stage RISC Pipeline, Cache Memory, Register File. GPU architectures: Streaming MultiProcessors, Cache Hierarchy. (5 Lectures)

Introduction to GPU programming: CPU / GPU comparisons. Parallel programming, CUDA. (4 Lectures, 1 Tutorial)

Memory hierarchy: DRAM / global, local / shared, private / local, textures, constant memory. Pointers, parameter passing, arrays and dynamic memory, multi-dimensional arrays. Memory allocation, memory copying across devices. Programs with matrices, performance evaluation with different memories. (8 Lectures, 1 Tutorial)

Synchronization :Memory consistency. Barriers (local versus global), atomics, memory fence. Prefix sum, reductions. (6 Lectures, 2 Tutorials)

Functions and debugging: Device functions, host functions, kernels, functors. Using and developing libraries. Debugging GPU programs. Profiling, Profiling Tools.(6 Lectures, 2 Tutorial)

Streams: Asynchronous processing, tasks, task-dependence. Overlapped data transfers, default stream, synchronization with streams. Events, event-based-synchronization. ( 3 lectures , 1 tutorial)

Warps and UVM: Warp Cooperative Execution Model, Unified virtual memory. ( 3 lectures , 1 tutorial)

Case studies such as Image processing, Graph Algorithms. Deep learning. (3 lectures, 2 tutorials)

Advanced topics (based on availability of time): Dynamic parallelism. Multi-GPU processing, Heterogeneous processing, concurrent data structures. (4 lectures, 2 tutorial)

Learning Outcomes

  1. Familiarity with GPU architecture and programming.
  2. Skill to program parallel algorithms on GPUs.
  3. Skill to develop programming models on GPUs.

Textbooks

  1. Programming Massively Parallel Processors: A Hands-on Approach; David Kirk, Wen-mei Hwu; Morgan Kaufman; 2022 (ISBN: 978-0323912310)

  2. CUDA Programming: A Developer’s Guide to Parallel Computing with GPUs; Shane Cook; Morgan Kaufman; 2012 (ISBN: 978-0124159334)

Past Offerings

Course Metadata

Item Details
Course Title GPU Programming
Course Code CS5658
Course Credits 3-1-0-4
Course Category PME
Proposing Faculty Dr. Unnikrishnan C
Approved on Senate of IIT Palakkad
Course prerequisites Data Structures and Algorithms (CS2030 or DS2030)
Course status NEW