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 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.
Lecturer
Asst. Prof. Ezio Bartocci
Homepage
https://tiss.tuwien.ac.at/course/educationDetails.xhtml?windowId=bb8&courseNr=182731&semester=2016S
Equipment
|
![]() |
![]() |
---|
Dates
Date | Time | Location | Event | Notes |
---|---|---|---|---|
07.03.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | Course Introduction & GPU Architectures | |
13.03.2018 | 10:00 - 12:00 | Seminarraum Techn. Informatik | CUDA Programming (Basics, Cuda Threads, Atomics) | |
14.03.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | CUDA Programming (Memories) | |
18.04.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | Parallel Patterns CUDA Tools | |
25.04.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | Introduction to the Thrust Library | |
02.05.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | Streams and Concurrency | |
08.05.2018 | 09:00 - 11:00 | Seminarraum Techn. Informatik | Unified Virtual Memory (UVA) | |
09.05.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | Multi-GPU Programming | |
15.05.2018 | 09:00 - 11:00 | Seminarraum Techn. Informatik | TBA | |
16.05.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | TBA | |
23.05.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | TBA | |
29.05.2018 | 09:00 - 11:00 | Seminarraum Techn. Informatik | TBA | |
30.05.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | TBA | |
05.06.2018 | 09:00 - 11:00 | Seminarraum Techn. Informatik | TBA | |
06.06.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | TBA | |
12.06.2018 | 09:00 - 11:00 | Seminarraum Techn. Informatik | TBA | |
13.06.2018 | 11:00 - 13:00 | Seminarraum Techn. Informatik | TBA |
Resources
- CUDA Training and Education
- Cardiac GPU Realtime simulation http://www.eziobartocci.com/research_interests.php
- CUDA Libraries (Official Documentation)
- CURAND Library - the NVIDIA CUDA library for random numbers generation
- CUFFT - the NVIDIA CUDA Fast Fourier Transform (FFT) library
- CUBLAS - the NVIDIA CUDA Basic Linear Algebra Subprograms library
- THRUST - the NVIDIA CUDA library of parallel algorithms and data structure
- CUSP - the Open Source C++ library of generic parallel algorithms for sparse linear algebra and graphs computations on CUDA architecture and GPU
- OpenCL specification (ver. 1.2)
- CUDA Toolkit Documentation