Applied Parallel Programming on GPU

Instructor: Assist. Prof. Dr. Alptekin Temizel


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. Similarities and differences of CUDA and OpenCL will also be discussed around these case studies.

Applied Parallel Programming on GPU Image

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. The course aims to provide awareness about GPUs and GPU programming. The course will introduce GPU architecture and programming tools to the students to equip them with the knowledge to design and implement their own solutions to compute expensive problems.

The intended learning outcomes are that on completion of this module the learner should: 
  • Compare and contrast GPU programming frameworks
  • Be in-depth knowledge about parallel programming and parallelism models
  • Describe the important parallel programming techniques
  • Be familiar with optimizations on GPU
  • Be able to design, develop and optimize software on GPU