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. (Chapter 1) UNIT II CUDA PROGRAMMING Using CUDA - Multi GPU - Multi GPU Solutions - Optimizing CUDA Applications : Problem Decomposition, Memory Considerations, Transfers, Thread Usage, Resource Contentions. (Chapter 2) UNIT III PROGRAMMING ISSUES Common Problems: CUDA Error Handling, Parallel Programming Issues, Synchronization, Algorithmic Issues, finding and Avoiding Errors. (Chapter 3) UNIT IV OPENCL BASICS OpenCL Standard – Kernels – Host Device Interaction – Execution Environment – Memory Model – Basic OpenCL Examples. (Chapter 4) UNIT V ALGORITHMS ON GPU Parallel Patterns: Convolution, Prefix Sum, Sparse Matrix - Matrix Multiplication - Programming Heterogeneous Cluster. (Chapter 5)