GPU Architectures and Computing

Aim


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.

 

Subject

 

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

Registration

The enrollment can be performed using the MyTI portal https://ti.tuwien.ac.at/admin/. The enrollment will be close on Friday 11th March 2016. The max number of students for this course is 15. Please register soon !!!

Lecturer

Asst. Prof. Ezio Bartocci

 

Homepage

https://tiss.tuwien.ac.at/course/educationDetails.xhtml?windowId=bb8&courseNr=182731&semester=2016S

 

Equipment

 

  • 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

 

Dates

Date Time LocationEvent Notes
15.03.2016 10:00 - 12:00 Seminarraum Techn. Informatik Course Introduction
17.03.2016 15:00 - 17:00 Seminarraum Techn. Informatik CUDA Programming Model
05.04.2016 10:00 - 12:00 Seminarraum Techn. Informatik Coding in CUDA
07.04.2016 15:00 - 17:00 Seminarraum Techn. Informatik Threads Atomics and Memories
19.04.2016 10:00 - 12:00 Seminarraum Techn. Informatik Parallel Patterns in CUDA (scan and reduce)
21.04.2016 15:00 - 17:00 Seminarraum Techn. Informatik Thrust Parallel Algorithms Library

CUDA Libraries

cuRAND Example (Pi estimation using MonteCarlo)

cuFFT Example

26.04.2016 9:00 - 11:00 Seminarraum Techn. Informatik Streams and Concurrency
28.04.2016 15:00 - 17:00 Seminarraum Techn. Informatik

Peer-to-Peer & Unified Virtual Addressing

Multi-GPU

10.05.2016 9:00 - 11:00 Seminarraum Techn. Informatik

ReactionDiffusion Example

Dynamic Parallelism

12.05.2016 15:00 - 17:00 Seminarraum Techn. Informatik CUDA Debugging
19.05.2016 15:00 - 17:00 Seminarraum Techn. Informatik
24.05.2016 10:00 - 12:00 Seminarraum Techn. Informatik

Optimizing Parallel Reduction in CUDA

26.05.2016 15:00 - 17:00 Seminarraum Techn. Informatik CUDA Profiling
02.06.2016 15:00 - 17:00 Seminarraum Techn. Informatik Project Discussion
07.06.2016 9:00 - 11:00 Seminarraum Techn. Informatik
09.06.2016 15:00 - 17:00 Seminarraum Techn. Informatik

Introduction to OpenCL

OpenCL example

30.06.2016 15:00 - 17:00 Seminarraum Techn. Informatik Project Presentation and Evaluation

Template and Example for the lab protocol

Projects Groups for SS16:

Group A: J. Kowanz, H. Bergmann, M. Schleiss (Reaction Diffusion using Streaming, Dynamic Parallelism)

Group B: D. Burian, M. Müllner

Group C: F. Guschlbauer, T. Kainrad, B. Knasmüller  (Breadth First Search)

Group D: S. Gschiel, S. Beyer (Matrix Inversion)

Group E: M. Haubenstock, C. Brendle (The Bayesian Networks Inference)

Group F: M. Lechner, P. Knöbel, J. Lövhall (Matrix Inversion)

Group G: C. Weiler, A. Ciachi (Rubik' cube solver)

 

Resources