Introduction to Parallel Programming – Types of Parallelism – SIMD and SIMT – GPU architecture- Threads, Blocks and Grids- GPU Memory Organization- CUDA Programming Model- CUDA Mem- ory Model- Multidimensional thread management with CUDA- Basic CUDA Programming Examples -CUDA Streams – Synchronization and Warp Scheduling, Optimization.
Introduction to OpenCL – OpenCL Device Architectures – Basic OpenCL Programming Model – OpenCL Memory Model – Concurrency and Execution Model – Dissecting a CPU/GPU – OpenCL for Heterogeneous Computing – OpenCL Implementation – examples.
Case study: Convolution, Video Processing, Histogram and Mixed Particle Simulation – OpenCL Extensions – OpenCL Profiling and Debugging – WebCL, Applications of GPU Architecture like Gaming, Computer Vision, etc.