Teaching Assistants
- Ermioni Papadopoulou (Head TA)
- Pascal Weber
- Daniel Wälchli
- Pascal Auf der Maur (pascalau@student.ethz.ch)
- Johan Lokna (johan.lokna@math.ethz.ch)
- Man Hin Cheng (chengman@student.ethz.ch)
Class Room
- Online (zoom link below)
Class Times
- Lecture: Friday, 12:15 – 14:00 (online – link to recordings below)
- Exercise: Friday, 14:15 – 16:00 (online)
Computer Rooms
- HG E26.1, E26.3, E27
The environment provided by these computers is similar to the exam environment.
Class Material
- Questions to TAs: Piazza
- Git repository: https://gitlab.ethz.ch/hpcseI_hs21/lecture.git
- Exercise submission: Moodle
Exam Material
- Documentation available during the exam: zip (600 MB)
Course Schedule and Material
Lectures
24.09.2021 | Lecture 1: Introduction | (Slides) (recording) |
01.10.2021 | Lecture 2: Cache and Concurrency | (Slides) (recording) |
08.10.2021 | Lecture 3: Parallel Computing – Concepts and Definitions | (Slides) (recording) |
15.10.2021 | Lecture 4: Instruction and Data-Level Parallelism (Part I) | (Slides) (recording) |
22.10.2021 | Lecture 5: Data-Level Parallelism (Part 2) and HPC libraries | (Slides) (recording) |
29.10.2021 | Lecture 6: Principal Component Analysis | (Slides) (recording) |
05.11.2021 | Lecture 7: Dimensionality reduction, Neural Networks, Autoencoders | (slides same as 29.10) (recording) |
12.11.2021 | Lecture 8: Dimensionality reduction (cont.), Diffusion | (Slides) (recording) |
19.11.2021 | Lecture 9: HPC Libraries (cont.) +TLP + OpenMP I | (Slides) (recording) |
26.11.2021 | Lecture 10: OpenMP II | (Slides) (recording) |
03.12.2021 | Lecture 11: MPI I | (Slides) (recording) |
10.12.2021 | Lecture 12: MPI II | (Slides) (recording) |
17.12.2021 | Mockup Exam | (handout) (skeleton code) (recording) (slides) (solution) (solution code) |
Exercises
Date | TA |
Exercise | Handout | Solution |
01.10.2021 | Ermioni Papadopoulou | Exercise 1. Amdahl's Law, Roofline Model, Cache | (slides), (exercise) , (skeleton code) , (tutorial debugging), (recording) | |
15.10.2021 | Pascal Auf der Maur | Exercise 2. Vectorization and IPL | (slides), (exercise), (skeleton code), (example code) (example solution code), (recording) | |
29.10.2021 | Johan Lokna | Exercise 3. PCA and Autoencoders | (slides), (exercise), (skeleton code), (example code), (recording) | |
12.11.2021 | Daniel Wälchli | Exercise 4. Diffusion | (slides), (exercise), (skeleton code), (extra material), (recording) | |
26.11.2021 | Pascal Weber | Exercise 5. OpenMP and Monte-Carlo Integration | (slides), (exercise), (skeleton code), (recording) | |
10.12.2021 | Man Hin Cheng | Exercise 6. MPI | (slides), (exercise), (skeleton code), (recording) |
Tutorials
Date | TA |
Session | Handout |
24.09.2021 | Ermioni Papadopoulou | Tutorial 1. C++, Makefiles, Euler | (slides) , (material) , (recording) |
08.10.2021 | Daniel Wälchli | Tutorial 2. Cache Optimizations | (slides), (material) , (recording) |
22.10.2021 | Pascal Auf der Maur | Tutorial 3. HPC Libraries | (material), (recording) |
05.11.2021 | Johan Lokna | Tutorial 4. PCA / Autoencoders | (slides), (material), (recording) |
19.11.2020 | Pascal Weber | Tutorial 5. Diffusion | (slides), (recording) |
03.12.2020 | Man Hin Cheng | Tutorial 6. Cell Lists & Visualization | (slides), (material), (recording) |
Student HW scheduling & deadlines
24.09.2021 | |
01.10.2021 | Release HW1 |
08.10.2021 | |
15.10.2021 | Release HW2 |
22.10.2021 | Hand-in HW1 |
29.10.2021 | Hand-in HW2 & Release HW3 & Self-Grading HW1 |
05.11.2021 | Self-Grading HW2 |
12.11.2021 | Hand-in HW3 & Release HW4 |
19.11.2021 | Self-Grading HW3 |
26.11.2021 | Hand-in HW4 & Release HW5 |
03.12.2021 | Self-Grading HW4 |
10.12.2021 | Hand-in HW5 & Release HW6 |
17.12.2021 | Self-Grading HW6 |
24.12.2021 | Hand-in HW6 |
07.01.2022 | Self-Grading HW6 |
Exam
Computer based session examination involving theoretical questions and coding problems. You are allowed to bring a handwritten summary of 4 A4 sheets, written on the front and back pages (8 pages total). In addition, we will provide you with the following material:
- Lecture slides
- Exercise solutions
- Additional lecture notes distributed during the lecture
- OpenMP specification and reference card (pdf)
- MPI standard and reference card (pdf)
- Offline version of cppreference.com
Textbooks
- An Introduction to Parallel Programming, P. Pacheco, Morgan Kaufmann, 2011
- Introduction to High Performance Computing for Scientists and Engineers, G. Hager and G. Wellein, CRC Press, 2011
- Parallel Programming in MPI and OpenMP, V. Eijkhout. (Will be available in the exam) List of chapters
- Computer Organization and Design, D.H. Patterson and J.L. Hennessy
Additional Material
Old Exam Sheets
- Exam Sheet (2012): It included some topics that are NOT part of this semester's lecture.
- Exam Sheet (2015): It included some topics that are NOT part of this semester's lecture. (skeleton codes)
- Exam Sheet (2019): It may include topics that are NOT part of this semester's lecture. (skeleton codes)
- Exam Sheet (2020): It may include topics that are NOT part of this semester's lecture. (skeleton codes)
- Documentation: Lecture slides and exercise solutions, Manuals for C++, OpenMP, MPI and SIMD. Available in the 2016 exam. Sample cover sheet
Useful Links
General links on HPC and clusters
- Bash tutorial
- cheat.sh, multi-purpose command line reference
- Command Reference
- Euler wiki
- CSCS users page
- www.hpc-ch.org
Tutorials
- HPC tutorial at LLNL – Blaise Barney
- SC15 Tutorial Preview Videos
- Argonne Training Program on Extreme-Scale Computing
C++
- C++ lecture notes: Basics, Templates, Classes
- cppreference.com
- cplusplus.com
OpenMP
MPI
SIMD
For Windows users
- Working Remotely: Tutorial for Windows Users
- PuTTY: a simple free SSH client for Windows
- WinSCP: for copying files between Windows and Euler
- Cygwin: Linux-like environment on Windows (Installation hints)
Others