- To understand the basics of GPU architectures
- 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 12
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 8
Using CUDA – Multi GPU – Multi GPU Solutions – Optimizing CUDA Applications: Problem Decomposition, Memory Considerations, Transfers, Thread Usage, Resource Contentions.
UNIT III PROGRAMMING ISSUES 8
Common Problems: CUDA Error Handling, Parallel Programming Issues, Synchronization,Algorithmic Issues, Finding and Avoiding Errors.
UNIT IV OPENCL BASICS 8
OpenCL Standard – Kernels – Host Device Interaction – Execution Environment – Memory Model – Basic OpenCL Examples.
UNIT V ALGORITHMS ON GPU 9
Parallel Patterns: Convolution, Prefix Sum, Sparse Matrix – Matrix Multiplication – Programming Heterogeneous Cluster.
TOTAL: 45 PERIODS
Upon completion of the course, the students will be able to
- Describe GPU Architecture
- Write programs using CUDA, identify issues and debug them
- Implement efficient algorithms in GPUs for common application kernels, such as matrix multiplication
- Write simple programs using OpenCL
- Identify efficient parallel programming patterns to solve problems