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