Masterpraktikum Scientific Computing - High Performance Computing - Winter 16
- Term
- WS 16
- Lecturer
- Prof. Dr. Michael Bader
Carsten Uphoff
Chaulio Ferreira - Time and Place
- Preliminary meeting: Thursday 30.6.16 15:00, room 02.07.023
Monday 16:00-18:00, room 02.07.023 (first meeting is on Mon, Oct 24) - Audience
- Masterpraktikum (Modul IN2106), Wahlpflichtpraktikum im Bereich theoretische Informatik (Modul IN8904)
Studierende im Masterstudiengang Informatik, Studierende der Informatik im Hauptstudium, Studierende der Techno-, Diplom- und Finanz-Mathematik
Language English
- Tutorials
- -
- Exam
- -
- Semesterwochenstunden / ECTS Credits
- 10 Credits
- TUMonline
- https://campus.tum.de/tumonline/wblv.wbShowLvDetail?pStpSpNr=950265167
Contents
News
- Project presentation: Monday 23.01.17 16:00
- Project phase report:
Monday 16.01.17Friday 20.01.17 12:00 - Presentation "assignment 4": Monday 19.12.16 16:00
- Presentation "assignment 3": Monday 5.12.16 16:00
- Presentation "assignment 2": Monday 21.11.16 16:00
- Presentation "assignment 1": Monday 7.11.16 16:00
- Kickoff: Monday 24.10.16 16:00-18:00, room 02.07.023
- Preliminary meeting: Thursday 30.6.16 15:00, room 02.07.023
- if you have questions in advance -> Carsten Uphoff
Content
High Performance Computing has become a critical success factor in research and industry. Even the computational power of commodity parts like desktop systems increased rapidly due to vectorization, EPIC, multi-core. This lab course uncovers the principles behind these buzzwords and highlights programming concepts, software design and coding styles which are mandatory to unleash the power of modern chips.
We focus on developing data structures and algorithms with respect to their performance, for both single and parallel executions. We deep-dive into different platforms like CPUs, coprocessors and multi-node clusters. Furthermore, we cover several programming concepts like auto-vectorization, explicit vectorization, OpenMP and MPI. The platform differences are evaluated through detailed runtime experiments.
Topics:
- Performance-Optimization of sequential applications
- Pipelining
- Loop unrolling
- Data dependencies
- Caches
- Cache blocking
- Performance-Measurement
- Pipelining
- State-of-the-Art Hardware
- CPUs
- Memory Subsystems
- Supercomputer
- Xeon Phi coprocessor
- Parallel Programming
- OpenMP
- MPI
The course is held in two parts. The first one introduces basics, concepts and programming models through theoretical and practical exercises. You work on these exercise in small teams. The second part is a real-life task: each team has to optimize a given scientific application with respect to the underlying hardware architecture.
C-Programming and Linux Know-How are helpful!
Slides
- 19.12.16: LinA | Scenario 0 | Scenario 1 | Scenario 2 | Scenario 3
- 5.12.16: Profiler
- 21.11.16: MPI, CG
- 7.11.16: OpenMP
- 24.10.16: Organisation and vectorisation
Exercise Sheets
- 5.12.16: Exercise Sheet 4
- 21.11.16: Exercise Sheet 3 | Code
- 7.11.16: Exercise Sheet 2 | Code
- 24.10.16: Exercise Sheet 1 | Code
Material
- MPI 2.2 Standard: http://www.mpi-forum.org/docs/mpi-2.2/mpi22-report.pdf
- OpenMP Tutorial: https://computing.llnl.gov/tutorials/openMP/
- Intel C++ Compiler Reference Manual: https://software.intel.com/en-us/intel-cplusplus-compiler-16.0-user-and-reference-guide
- Intel Architecture Manual: http://www.intel.com/products/processor/manuals/index.htm