Course syllabus for Project in parallel computing

Course syllabus adopted 2024-01-30 by Head of Programme (or corresponding).

Overview

  • Swedish nameProjekt inom parallell programmering
  • CodeDAT630
  • Credits7.5 Credits
  • OwnerMPHPC
  • Education cycleSecond-cycle
  • Main field of studyComputer Science and Engineering, Electrical Engineering, Software Engineering
  • DepartmentCOMPUTER SCIENCE AND ENGINEERING
  • GradingTH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

Course round 1

  • Teaching language English
  • Application code 86124
  • Block schedule
  • Open for exchange studentsYes

Credit distribution

0124 Project 6 c
Grading: TH
0 c0 c6 c0 c0 c0 c
0224 Examination 1.5 c
Grading: UG
0 c0 c1.5 c0 c0 c0 c

In programmes

Examiner

Eligibility

General entry requirements for Master's level (second cycle)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Specific entry requirements

English 6 (or by other approved means with the equivalent proficiency level)
Applicants enrolled in a programme at Chalmers where the course is included in the study programme are exempted from fulfilling the requirements above.

Course specific prerequisites

A course on Parallel Programming (such as DAT400) and a course on computer organization (such as EDA333) are required.

Aim

This course looks at the design of high-performance and energy efficient software for parallel computers, performance modeling, and HW/SW codesign of parallel and heterogeneous computer systems. The course is a project-oriented course in which you will develop skills for programming and assessing the performance of parallel and heterogeneous computers. A series of lectures on the principles of parallel hardware provide required background for architecture-aware program optimization. Via group assignments you will furthermore develop your teamwork skills, including version control, communication and presentation.

Learning outcomes (after completion of the course the student should be able to)

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

Content

This course focuses on the development of parallel software with the goal of optimizing performance and efficiency. Furthermore, the course introduces methodologies for performance prediction and hardware/software codesign. Finally, the course teaches teamwork skills, including version control, communication, and presentation. The course is organized around a multi-week project that is tackled by multiparticipant teams. 

Organisation

The course consists of project sessions (laboratory and lecture hall), plus a few lectures covering basic parallel computer architecture. 

The focus of the lectures is on
  • multicore, manycore and vector architecture, with a focus on the memory hierarchy and its implications to the performance of OpenMP programs
  • architectural support for message passing, and how it impacts the performance of MPI programs
  • architecture of GPGPUs, and how it impacts optimization of CUDA programs
The course will also include sessions that cover several aspects related to software engineering and codesign
  • software version control and testing
  • tracing and simulation for performance modeling and hardware/software codesign
In addition, the course will feature a set of hands-on sessions where the students, organized into teams, will optimize a given code, practice basic software, teamwork and performance engineering skills, and perform performance modeling and HW/SW codesign. 

Finally, the course will have optional modules covering advanced topics in computer architecture. 

Literature

Collection of articles announced in the course page

Examination including compulsory elements

The course is evaluated via a written individual exam, and a project conducted in teams. The written exam is evaluated via pass/fail. The project is evaluated on a scale (U, 3, 4, 5). The project grade will be set based on the quality of (1) the written report, (2) the presentation, and (3) the quality of the peer review.  
All course components must have been approved in order to receive a passing grade for the full course. The final grade will be the same as the project grade.

The course examiner may assess individual students in other ways than what is stated above if there are special reasons for doing so, for example if a student has a decision from Chalmers on educational support due to disability.