The course has been designed to give hands-on knowledge and development experience on general purpose GPU programming. The students will learn about the GPU as part of the PC architecture. Then they will learn about development of GPU software using CUDA C and OpenCL. Various optimization issues, particularly effective use of memory and floating point calculations will be discussed. The concepts and the effects of optimization will be demonstrated with case studies. The students will be expected to propose a compute-expensive problem to implement on the GPU and then develop and optimize it on the GPU and compare the performance results with the CPU implementation. They are also expected to compare various optimization strategies.
This course aims to give background knowledge on several topics related to deep learning and provide a laboratory environment for practical applications. Backpropagation, convolutional neural networks, generative adversarial networks, energy-based learning, optimization techniques, recurrent networks, long short-term memory (LSTM), Deep Reinforcement Learning are some of the core topics that will be covered through the lectures. The course aims to balance theory and practice in that it will involve students implementing various algorithms, testing those algorithms under several domains and accessing GPU clouds during laboratory sessions to code the program examples using Tensorflow.