Course syllabus
Course-PM
DAT630 Project in parallel computing lp3 VT26 (7.5 hp)
Course is offered by the department of Computer Science and Engineering
Contact details
- Miquel Pericàs <miquelp@chalmers.se>, Examiner + Lecturer
- Hari Abram <hariv@chalmers.se>, Teaching Assistant
- Sonia Rani Gupta <soniar@chalmers.se>, Teaching Assistant
- Hongguang Chen <chenhon@chalmers.se>, Teaching Assistant
Course purpose
The focus of DAT630 is high-performance software. The main course component is a project in which participants, assembled in teams, develop skills in programming, performance analysis, optimization, benchmarking, and deploying software on parallel and heterogeneous computers. A series of lectures on parallel computer architecture provide background on architecture-aware program optimization. Via the term-long project and a set of group assignments participants also develop teamwork skills, including version control, communication and presentation.
Schedule
Check TimeEditt for slots and rooms. Tuesday sessions are plenary sessions. All participants are expected to attend. Wednesday and Friday sessions are team specific. Each teams is expected to attend only one particular teimslot. There are three types of sessions:
- Lectures are held on Tuesdays 9h-12h. The lectures are given by Miquel
- Tutorials are held on Tuesdays and will be given by Hari
- Supervision sessions are on Wednesday and Friday. Hari, Sonia and Hongguang are responsible for these sessions
- There is one exercise session that will be given by Sonia
The sessions on Wednesday (8h-10h) and Friday (9h-12h) are reserved for supervision activities and TA feedback. There is one such session every week, except for the very last week. For clarity, the supervision sessions are omitted from the following table!
| When | Where | What |
Responsible |
|
| #1 | Jan 20th, 9:00-11:45h | HC1 |
Introduction: Objectives, Course Components (9-10) Tutorial: GIT and Gitlab (10-11:45) |
Miquel (Intro), Hari (Tutorial) |
| #2 | Jan 27th, 10:00-11:45 | HC1 | Tutorial: Containers | Hari |
| #3 | Feb 3rd, 9:00-11:45h | HC1 | Lecture #1: Benchmarking, Vector Architectures | Miquel |
| #4 | Feb 10th, 9:00-11:45h | HC1 | Lecture #2: Chip Multiprocessors | Miquel |
| #5 | Feb 17th, 9:00-11:45h | HC1 | Lecture #3: GPGPU | Miquel |
| #6 | Feb 24th, 9:00h-11:45h | HC1 | Lecture #4: Message Passing Hardware | Miquel |
| #7 | March 3rd, 9-12h | HC1 | TBD | Sonia |
| #8 | March 10th - 13th | Project Presentations (all teams) | Miquel |
This schedule may change! Check this page periodically. In general, we try to notify changes well ahead of the affected sessions.
Course literature
This course is designed around online materials and tutorials that are provided during the course
Course design
- version control and testing
- containers and singularity
- Benchmarking
- Multicore, manycore and vector architecture, their memory hierarchy and their implications to the performance of OpenMP and vector programs
- HW support for message passing, and how it impacts the performance of MPI programs
- Microarchitecture of GPGPUs, and how it impacts optimization of CUDA programs
Continuous feedback will be collected to assess the degree of learning and to improve future versions of the course.
The course will use Canvas as the main tool for communication. Chalmers Gitlab will be used for software development. The C3SE Vera cluster is used for benchmarking.
Changes made since the last occasion
This is the 2nd edition of the course. There are several changes, including:
- The project now consists of two components: (1) program optimization and (2) benchmarking. Earlier the project consisted only of program optimization, which did not provide a good environment to experiment with containerization.
- All teams work on the exact same project. This simplifies the task of giving fair grades across a large number of teams. It also enables to rank the final result in terms of performance. Performance will however not be a metric that impacts grades, and it is not used for bonus points either.
- Project documentation has been updated accordingly. We also provide a description of the code for the programming assignment. Participants no longer have to locate documentation online.
- Teams are randomized, self-registration is no longer an option. This has several goals: (i) avoid teams in which a large subset of participants already know each other, leading to marginalization of "newcomers", (ii) it enables us to distribute non-MPHPC members across the teams, (iii) it statistically improves the distribution of abilities/expertise across teams, and (iv) it allows us to quickly setup the teams, avoiding the extra latency of a self-setup phase.
- The peer review assignment has been removed from the project.
- The length of the project report has been shortened to ~12 pages (it was 20 pages)
- The project presentations are no longer mandatory assistance for everybody
- The tutorial on job scheduling has been removed and is replaced by a mandatory assignment provided by C3SE
- The tutorial on CI/CD has been removed.
Learning objectives and syllabus
Learning objectives:
- describe current approaches to parallel computing
- explain the design principles of the hardware support for the shared memory and message passing programming models
- describe the implementation of different models of thread-level parallelism, such as chip multiprocessors, many-cores or GPGPUs
- list basic approaches to software engineering, performance engineering and teamwork
- design scalable parallel software and analyze its performance
- debug and optimize the execution of parallel programs on heterogeneous computers
- apply performance modeling and simulation techniques for performance prediction and HW/SW codesign.
- apply teamwork skills for version control, communication, presentation, and conflict management.
- ability to cooperate in diverse group compositions with team members with different skills, cultural and educational backgrounds, gender and nationality
- analyze the trade-offs of different approaches to parallel computing in terms of function, performance and cost
- analyze and judge the performance portability of a piece of software
Link to the syllabus on Studieportalen.
Examination form
The course consists of two components: project (6c) and written examination (1.5c). Only the project is graded. The written examination is pass/fail.
IMPORTANT: Participants that submit all the in-course bonus assignments do not need to attend the written exam.
The written examination consists of problems covering Lecture 1-4. These problems will be similar to the corresponding bonus assignment
Course summary:
| Date | Details | Due |
|---|---|---|