GPU Architectures and Computing



Graphics processing units (GPUs)  were originally developed  as specialized electronic circuits for fast image processing and graphics rendering. GPUs are nowadays heavily employed for all the general purpose applications that require high-performance computational power, because their highly parallel structure makes them more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel. GPUs are becoming a valid alternative to the classic CPU-based supercomputer clusters also for the improved energy-consumption/performance ratio and their lower cost.  GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles.

The aim of the course is to provide students with a general overview about this emerging multi-core parallel computing architecture. The objectives of this course are:

  • gaining understanding of GPU computer architecture,
  • getting familiar with GPU programming environments,
  • implementing programs solving problems that would classically have been run on supercomputers

Basic notions of Computer Architectures and a good knowledge of C programming are expected, as all the programming will use environments building on C.




The course will start with an introduction on the modern GPU architectures, by tracing the evolution from the SIMD (Single Instruction, Multiple Data) architecture to the current architectural features and by discussing the trends for the future. We then will explore the two main Programming Models: CUDA and OpenCL. Real case studies will expose students to the potential applications of this technology. A final project will give them the possibility to make a concrete experience of the concepts taught, to solve a modest GPU programming problem that will be assigned by the teacher or proposed by the student, to present it at the end to the class. This is the
list of the main topics of the course:

  • GPU Architectures (NVIDIA Fermi, NVIDIA Kepler, ATI/AMD)
  • CUDA Programming Model
  • OpenCL Programming Model
  • Case Studies (Graph exploration, Path Planning, Curvature Analysis, Signal Processing, PDE Solvers)
  • Optimizing GPU performance



The enrollment can be performed using the MyTI portal The enrollment will be close on Friday 10th March 2017. The max number of students for this course is 15. Please register soon !!! The lessons will start on Monday 13th of March (10-12) in the Seminarraum Techn. Informatik.


Asst. Prof. Ezio Bartocci






  • Our rack is equipped with:
    • 4 NVIDIA Kepler K10
    • 8 GPUs for a total of 12288 cores
    • 16 Teraflops in single precision
    • 1 Teraflops in double precision
    • 64 GB of CPU RAM available
    • 32 GB of GPU RAM available



Date Time Location Event Notes
13.03.2017 13:00 - 14:00 Seminarraum Techn. Informatik Course Introduction  
20.03.2017 12:00 - 14:00 Seminarraum Techn. Informatik GPU Architectures  
23.03.2017 10:00 - 12:00 Seminarraum Techn. Informatik CUDA Programming (Basics, Cuda Threads, Atomics)  
27.03.2017 15:00 - 17:00 Seminarraum Techn. Informatik CUDA Programming (Memories - Part I)  
30.03.2017 10:00 - 12:00 Seminarraum Techn. Informatik CUDA Programming (Memories - Part II)  
03.04.2017 15:00 - 17:00 Seminarraum Techn. Informatik Parallel Patterns (Part I)  
06.04.2017 10:00 - 12:00 Seminarraum Techn. Informatik Parallel Patterns (Part II)  
24.04.2017 12:00 - 13:00 Seminarraum Techn. Informatik Introduction to the Thrust Library  
04.05.2017 12:00 - 14:00 Seminarraum Techn. Informatik Project Discussion  
11.05.2017 10:30 - 12:00 Seminarraum Techn. Informatik  Streams and Concurrency  
15.05.2017 12:00 - 14:00 Seminarraum Techn. Informatik Unified Virtual Memory (UVA)  
22.05.2017 13:00 - 14:00 Seminarraum Techn. Informatik Multi-GPU Programming  
29.05.2017 12:00 - 13:30 Seminarraum Techn. Informatik    
01.06.2017   Seminarraum Techn. Informatik    
05.06.2017 10:00 - 12:00 Seminarraum Techn. Informatik    
    Seminarraum Techn. Informatik