htw saar Piktogramm QR-encoded URL
Back to Main Page Choose Module Version:
XML-Code

flag

GPU Computing

Module name (EN):
Name of module in study programme. It should be precise and clear.
GPU Computing
Degree programme:
Study Programme with validity of corresponding study regulations containing this module.
Applied Informatics, Master, ASPO 01.10.2011
Module code: PIM-WI72
SAP-Submodule-No.:
The exam administration creates a SAP-Submodule-No for every exam type in every module. The SAP-Submodule-No is equal for the same module in different study programs.
P222-0091
Hours per semester week / Teaching method:
The count of hours per week is a combination of lecture (V for German Vorlesung), exercise (U for Übung), practice (P) oder project (PA). For example a course of the form 2V+2U has 2 hours of lecture and 2 hours of exercise per week.
2V+2P (4 hours per week)
ECTS credits:
European Credit Transfer System. Points for successful completion of a course. Each ECTS point represents a workload of 30 hours.
5
Semester: 1
Mandatory course: no
Language of instruction:
German
Assessment:
Written exam/Project

[updated 20.12.2017]
Applicability / Curricular relevance:
All study programs (with year of the version of study regulations) containing the course.

KI784 (P222-0091) Computer Science and Communication Systems, Master, ASPO 01.04.2016 , semester 1, optional course, informatics specific
KIM-GPU Computer Science and Communication Systems, Master, ASPO 01.10.2017 , semester 1, optional course, informatics specific
PIM-WI72 (P222-0091) Applied Informatics, Master, ASPO 01.10.2011 , semester 1, optional course, informatics specific
PIM-GPU (P222-0091) Applied Informatics, Master, ASPO 01.10.2017 , semester 1, optional course, informatics specific
Workload:
Workload of student for successfully completing the course. Each ECTS credit represents 30 working hours. These are the combined effort of face-to-face time, post-processing the subject of the lecture, exercises and preparation for the exam.

The total workload is distributed on the semester (01.04.-30.09. during the summer term, 01.10.-31.03. during the winter term).
60 class hours (= 45 clock hours) over a 15-week period.
The total student study time is 150 hours (equivalent to 5 ECTS credits).
There are therefore 105 hours available for class preparation and follow-up work and exam preparation.
Recommended prerequisites (modules):
None.
Recommended as prerequisite for:
Module coordinator:
Prof. Dr. Jörg Keller
Lecturer: Prof. Dr. Jörg Keller

[updated 13.07.2016]
Learning outcomes:
After successfully completing this module, students will be able to understand the operation of modern CPU/GPU structures and
to compare their essential characteristics. With the help of GPU programming paradigms, they will be able to plan massively parallel approaches to solutions,
assess their resource consumption and demonstrate their practicability on the basis of concrete implementations.
 
Furthermore, students will be able to adapt learned techniques to new problems and assess the quality of the corresponding solutions.


[updated 24.02.2018]
Module content:
The lecture will start with a short overview of the architecture and
basics of parallel programming for multi-core CPUs and GPUs.
In doing so, we will concentrate on the similarities and differences,
in order to simplify the programming of GPUs by transferring parallel programs
for multi-cores. In addition to techniques such as the regularization
of control flow and memory accesses, algorithmic
techniques will also be taught using several application domains
ranging from classical numerics to cryptography.
 
- The architecture of modern CPU cores
  (super scalability, hyperthreading, etc.)
- The architecture of modern multi-core processors
  (multiple cores, shared caches, memory access)
- The programming of modern multi-core processors
  (basics of POSIX threads and OpenMP)
- Advanced programming of modern multi-core processors
  (examples of coordination by critical sections, barriers, etc)
 
- The architecture of modern GPU architectures
  (several multiprocessors, multiprocessors as SIMD architectures)
- Differences between GPUs and CPUs
  (SIMD vs MIMD, data transport, CPU/GPU collaboration)
- Advantages of GPUs over CPUs
  (processing power, explicit use of local memory, massive parallelism)
- Basics of GPU programming with CUDA
  (example programs, time measurement, relation calculation transport)
- Differences between CUDA and OpenCL
  (OpenCL more general, but more complex, code usually less efficient)
 
- Performance dependency between indexing and memory usage
  (differences depending on dimensional number and size, placement of variables)
- Regularization of code for performance enhancement
  (transfer of multi-core code to GPU, SIM, etc.)
 
- Numeric applications
  (parallel numerical solution of simple differential equations)
- Combinatorial applications
  (problems in graphs, focus on regularization)
- Cryptographic applications
  (focus on regularity, as well as bit-serial implementation)
- Hard problems
  (NP-hard problems, approximations, parallelization for GPU)
 


[updated 06.09.2018]
Teaching methods/Media:
Cuda systems with NVidia Tesla and Kepler GPU architecture

[updated 20.12.2017]
Recommended or required reading:


[still undocumented]
Module offered in:
WS 2018/19, WS 2017/18, WS 2016/17
[Thu Nov 21 15:01:23 CET 2024, CKEY=kg, BKEY=pim, CID=PIM-WI72, LANGUAGE=en, DATE=21.11.2024]