Parallel Programming and Heterogeneous Computing (2019)
Prof. Dr. Andreas Polze
In this lecture you will learn the theoretical and practical solution available for parallel software development.
Since the very beginning of computers, processors were build with ever-increasing clock frequencies and instruction-level optimizations for faster serial code execution, such as ILP, caches, or speculative engines. Software developers and industry got used to the fact that applications get faster by just exchanging the underlying hardware. For several years now, these rules are proven to be no longer valid. Moore's law about the ever-increasing number of transistors per die is still valid, but decreased structural sizes and increased power consumption demand stalling, or even reduced, clock frequencies. Due to this development, serial execution performance no longer improves automatically with the next processor generation.
In the 'many-core era' that happens now, additional transistors are used not to speed up serial code paths, but to offer multiple execution engines ('cores') per processor. This changes every desktop-, server-, or even mobile system into a parallel computer. The exploitation of additional transistors is therefore now the responsibility of software, which makes parallel programming a mandatory approach for all software with scalability demands.
The following topics and technologies will be covered:
- Theory: Flynn's Taxonomy, Strategies, Memory Models
- Shared Memory: PThreads, C++11 Threads, Futures, OpenMP, TBB
- Non-Uniform Memory Access: libnuma, PGASUS
- On-Chip Accelerators: SIMD (SSE, AVX, AltiVec), Compression, LLVM-IR
- External Accelerators: GPUs (OpenCL/CUDA), Xeon Phi, FGPAs (CAPI SNAP/MetalFS)
- Shared Nothing: MPI, CloudCL, Actors (Erlang)
- Future Developments: RISC-V, OpenCAPI, Gen-Z
Extent: 4 SWS / 6 ECTS
Wed, 11:00 - 12:30, H.E-51
Thu, 13:30 - 15:00, H.E-51
All slides will be available in English. The lecture will be held in German, unless English is requested.
ExamsThe oral exams will take place on September 9th, 13th and October 7th and 8th. Each exams lasts 30 minutes, and you are free to start with a short 3-5 minutes presentation (no slides) of a topic of choice from the lecture. Sign up for an exam slot using our online tool.
Assignments have to be solved in teams of two persons. The oral exam admittance is achieved if 50% of each assignment is solved correctly. We will provide one non-mandatory assignment at the end of the semester, that can be used to cancel out one failed assignment.
All assigments are submitted to and valided by our submission system at /submit/. Submissions failing the validator script will be treated like not handed in (thus failed).
This preliminary planning may change in course of the semester.