IF4093 GPU Computing Syllabus:

IF4093 GPU Computing Syllabus – Anna University PG Syllabus Regulation 2021

COURSE OBJECTIVES:

 To understand the basics of GPU architectures
 To understand CPU GPU Program Partitioning
 To write programs for massively parallel processors
 To understand the issues in mapping algorithms for GPUs
 To introduce different GPU programming models

UNIT I GPU ARCHITECTURE

Evolution of GPU architectures – Understanding Parallelism with GPU –Typical GPU Architecture – CUDA Hardware Overview – Threads, Blocks, Grids, Warps, Scheduling – Memory Handling with CUDA: Shared Memory, Global Memory, Constant Memory and Texture Memory.

UNIT II CUDA PROGRAMMING

Using CUDA – Multi GPU – Multi GPU Solutions – Optimizing CUDA Applications: Problem Decomposition, Memory Considerations, Transfers, Thread Usage, Resource Contentions.

UNIT III PROGRAMMING ISSUES

Common Problems: CUDA Error Handling, Parallel Programming Issues, Synchronization, Algorithmic Issues, Finding and Avoiding Errors.

UNIT IV OPENCL BASICS

OpenCL Standard – Kernels – Host Device Interaction – Execution Environment – Memory Model – Basic OpenCL Examples.

UNIT V ALGORITHMS ON GPU

Parallel Patterns: Convolution, Prefix Sum, Sparse Matrix – Matrix Multiplication – Programming Heterogeneous Cluster.

SUGGESTED ACTIVITIES:

1. Debugging Lab
2. Performance Lab
3. Launching Nsight
4. Running Performance Analysis
5. Understanding Metrics
6. NVIDIA Visual Profiler
7. Matrix Transpose Optimization
8. Reduction Optimization

COURSE OUTCOMES:

CO1: Describe GPU Architecture
CO2: Write programs using CUDA, identify issues and debug them
CO3: Implement efficient algorithms in GPUs for common application kernels, such as matrix multiplication
CO4: Write simple programs using OpenCL
CO5: Identify efficient parallel programming patterns to solve problems

TOTAL: 45 PERIODS

REFERENCES

1. Shane Cook, CUDA Programming: “A Developer’s Guide to Parallel Computing with GPUs (Applications of GPU Computing), First Edition, Morgan Kaufmann, 2012.
2. David R. Kaeli, Perhaad Mistry, Dana Schaa, Dong Ping Zhang, “Heterogeneous computing with OpenCL, 3rd Edition, Morgan Kauffman, 2015.
3. Nicholas Wilt, “CUDA Handbook: A Comprehensive Guide to GPU Programming, Addison – Wesley, 2013.
4. Jason Sanders, Edward Kandrot, “CUDA by Example: An Introduction to General Purpose GPU Programming, Addison – Wesley, 2010.
5. David B. Kirk, Wen-mei W. Hwu, Programming Massively Parallel Processors – A Hands-on Approach, Third Edition, Morgan Kaufmann, 2016.
6. http://www.nvidia.com/object/cuda_home_new.html
7. http://www.openCL.org