|
|
Module code: PIM-WI72 |
|
2V+2P (4 hours per week) |
5 |
Semester: 1 |
Mandatory course: no |
Language of instruction:
German |
Assessment:
Written exam/Project
[updated 20.12.2017]
|
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
|
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
|