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 TimeEdit Links to an external site 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

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: Multicores Miquel
#5 Feb 17th, 9:00-11:45h HC1 Lecture #3: GPGPU Miquel
Feb 24th, 9:00h-11:45h HC1 No lecture
#6 Feb 27th, 9:00-11:45h SB3-L111 Lecture #4: Message Passing Hardware Miquel
March 3rd, 9:00-11:45 HC1 No lecture
#7 March 10th 10-12h, and March 11th 8:30-10h HC1, EL41 Project Presentations (all teams) Miquel, Sonia, Hari, Hongguang
#8 March 13th 8:30-12h TP-L22 Team Q&A Miquel, Sonia, Hari, Hongguang

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

The course consists of project sessions (lectures and tutorials), and lectures covering parallel computer architecture. 
The main topic of the course is a multi-week project in which students, organized into teams, port and optimize a given code to several programming models, practice software engineering and performance engineering skills, work on benchmarking, teamwork and presentation. The project will be supported by a set of supervision sessions and several tutorial sessions on: 
  • version control and testing
  • containers and singularity
The focus of the lectures is on:
  • 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:

 

After completion of the course the student should be able to:
Knowledge and understanding
  • 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
Competence and skills
  • 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
Judgement and approach
  • 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.

https://www.chalmers.se/en/education/your-studies/find-course-and-programme-syllabi/course-syllabus/DAT630/?acYear=2025%2F2026 Links to an external site. 

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

The final course grade is the same as the project. You need to pass the written exam covering lectures 1-4 in order to get a full course grade

Course summary:

Course Summary
Date Details Due