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

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 

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:

Course Summary
Date Details Due