Masterpraktikum Scientific Computing - High Performance Computing - Winter 13
- Term
- Winter 13
- Lecturer
- Michael Bader,
Alexander Heinecke - Time and Place
- room: 02.07.023, every Tuesday at 15:00 until 16:30, for the detailed schedule, please see below.
- 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
- 6 SWS / 10 Credits
- TUMonline
- https://campus.tum.de/tumonline/lv.detail?clvnr=950111395
Contents
News
- there will be no lecture on 15.10.2013
- 22.10., 02.07.023: hand out exercise sheet 1
- 29.10., 02.07.023: voluntary meeting on exercise sheet 1
- 05.11., 02.07.023: discussion exercise sheet 1, hand out exercise sheet 2
- 12.11., 02.07.023: voluntary meeting on exercise sheet 2
- 20.11., 02.06.020, WEDNESDAY!: discussion exercise sheet 2, hand out exercise sheet 3
- 26.11., 02.07.023: voluntary meeting on exercise sheet 3
- 03.12., 02.07.023: discussion exercise sheet 3, hand out exercise sheet 4
- 10.12., 02.07.023: voluntary meeting on exercise sheet 4
- 17.12., 02.07.023: discussion exercise sheet 4, hand out project work
- 1st half of Jan 2014: intermediate project results presentation
- End of Jan 2014/ early Feb 2014: finel project presentation
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 datastructers and algorithms with respect to their performance, for both single and parallel executions. We deep-dive into different platforms like CPUs, GPUs and multi-node clusters. Furthermore, we cover several programming concepts like auto-vectorization, explicit vectorization, OpenMP, MPI and OpenCL. 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
- GPUs
- Parallele Programming
- OpenMP
- MPI
- OpenCL
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
- 22.10.2013: Introduction, Vectorization
- 05.11.2013: OpenMP
- 20.11.2013: MPI+CG
- 03.12.2013: Intel Cilk + OpenCL
- 17.12.2013: Project,SWE
Exercise Sheets
- 22.10.2013: Exercise Sheet 1 | Code (hand in on 04.11.2013), hint: DGEMM Optimization
- 05.10.2013: Exercise Sheet 2 | Code (hand in on 18.11.2013)
- 22.11.2013: Exercise Sheet 3 | Code (hand in on 02.12.2013)
- 03.12.2013: Exercise Sheet 4 (hand in on 16.12.2013)
- 17.12.2013: Project
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: http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/main_cls_lin.pdf
- Intel Architecture Manual: http://www.intel.com/products/processor/manuals/index.htm