PARALLEL PROGRAMMING ON GPU ARCHITECTURES

Academic Year 2016/2017 - 3° Year - Curriculum A
Teaching Staff: Giuseppe BILOTTA
Credit Value: 6
Scientific field: INF/01 - Informatics
Taught classes: 48 hours
Term / Semester:

Learning Objectives

Offer the students the fundamentals of massively parallel computing on modern hardware (GPUs, multicore CPUs and accelerators) based on the stream computing principle.

By the end of the course the student should have acquired familarity with the basics of parallel computing and its fundamental paradigms (embarrassingly parallel problems, reductions and scans), and with the main frameworks for the development of massively parallel applications (CUDA and OpenCL).


Detailed Course Content

  • History of graphic cards and GPGPU
  • GPGPU programming basics; introduction to CUDA
  • High-level CUDA programming: the CUDA runtime
  • Benchmarking, optimization and debugging
  • Low-level CUDA programming: the CUDA driver interface
  • OpenCL basics and heterogeneous GPGPU programming
  • Introduction to multi-GPU

Textbook Information

NVIDIA CUDA Programming Guide
OpenCL specification