Established by: Faculty Board of Science and Technology, 2025-03-18
Contents
The course gives an introduction to the subject of parallel programming. The focus is on shared-memory and distributed-memory architectures. Such architectures appear in everything from laptops and mobile devices to the world's largest supercomputers. The course teaches both theory and practical skills necessary to construct and reason about efficient parallel programs. The course covers theoretical and practical tools used to assess the quality of parallel programs, as well as the two most used parallel programming models, namely OpenMP and MPI. Other topics include: parallel computer architectures, parallel programming patterns, synchronization, dependencies, debugging and profiling of parallel code.
Expected learning outcomes
Knowledge and understanding After completing the course, the student should be able to:
(FSR 1) explain concepts and terminology related to measurement and assessment of performance of parallel programs, memory hierarchies, and vector instructions;
(FSR 2) explain concepts and terminology related to parallel programming for shared-memory and distributed-memory systems, with focus on the programming models OpenMP and MPI;
(FSR 3) identify causes and solutions to limited parallelism.
Competence and skills After completing the course, the student should be able to:
(FSR 4) perform task decomposition, dependence analysis, and scheduling;
(FSR 5) write parallel programs using OpenMP and MPI;
(FSR 6) measure, assess, and present the performance of parallel programs.
Judgement and approach After completing the course, the student should be able to:
(FSR 7) based on given guidelines, evaluate a parallel program.
Required Knowledge
At least 90 ECTS, including 60 ECTS Computing Science or two years within a study programme. At least 15 ECTS programming; 7.5 ECTS data structures and algorithms; and 7.5 ECTS systems programming. Proficiency in English equivalent to the level required for basic eligibility for higher studies.
Form of instruction
Instruction consists of lectures, group exercises, and mandatory assignments. In addition to scheduled activities, individual work with the material is also required.
Examination modes
The performance on the course is assessed based on written assignments and a written exam in halls. On the course as a whole, the grades given are Fail (U), Pass (3), Pass with Mark (4), or Pass with Distinction (5). In order to pass the course completely, all mandatory parts must be passed as well. The final grade of the course is a summary assessment of the results and decided only after all mandatory parts are passed.
Adapted examination The examiner can decide to deviate from the specified forms of examination. Individual adaptation of the examination shall be considered based on the needs of the student. The examination is adapted within the constraints of the expected learning outcomes. A student that needs adapted examination shall no later than 10 days before the examination request adaptation from the Department of Computing Science. The examiner makes a decision of adapted examination and the student is notified.
Other regulations
The course may not be included in a degree together with the course 5DV152.
If the syllabus has expired or the course has been discontinued, a student who at some point registered for the course is guaranteed at least three examinations (including the regular examination) according to this syllabus for a maximum period of two years from the syllabus expiring or the course being discontinued.