[Translation missing: page.coursepage.titleprefix] High-performance parallel programming

[Translation missing: page.coursepage.adopteddate] 2021-02-26 [Translation missing: page.coursepage.adoptedby].

[Translation missing: page.coursepage.overview]

  • [Translation missing: page.coursepage.namealt]Hög-prestanda parallell programmering
  • [Translation missing: page.coursepage.coursecode]DAT400
  • [Translation missing: page.coursepage.credit]7.5 Credits
  • [Translation missing: page.coursepage.owner]MPHPC
  • [Translation missing: page.coursepage.edulevel]Second-cycle
  • [Translation missing: page.coursepage.mainsubjects]Computer Science and Engineering, Software Engineering
  • [Translation missing: page.coursepage.dept]COMPUTER SCIENCE AND ENGINEERING
  • [Translation missing: page.coursepage.grading]TH - Pass with distinction (5), Pass with credit (4), Pass (3), Fail

[Translation missing: page.coursepage.courseround] 1

  • [Translation missing: page.coursepage.teachlang] [Translation missing: general.acronyms.en]
  • [Translation missing: page.coursepage.applcode] 86116
  • [Translation missing: page.coursepage.maxamount]80
  • [Translation missing: page.coursepage.blockschedule]
  • [Translation missing: page.coursepage.erasmus]Yes

[Translation missing: page.coursepage.modules]

0119 Laboratory 3 c
[Translation missing: page.coursepage.grading]: UG
3 c0 c0 c0 c0 c0 c
0219 Examination 4.5 c
[Translation missing: page.coursepage.grading]: TH
4.5 c0 c0 c0 c0 c0 c
  • 28 Okt 2022 pm J
  • 03 Jan 2023 am J
  • 21 Aug 2023 am J

[Translation missing: page.coursepage.inprogrammes]

[Translation missing: page.coursepage.examinator]

[Translation missing: page.coursepage.tocoursepage] ([Translation missing: general.aria.newtab])

[Translation missing: page.coursepage.genentryreq]

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.

[Translation missing: page.coursepage.specentryreq]

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.

[Translation missing: page.coursepage.prerequisites]

The course DAT017 - Machine oriented programming or similar course is required. The course TDA384 - Principles for Concurrent programming is recommended.

[Translation missing: page.coursepage.purpose]

This course looks at parallel programming models, efficient programming methodologies and performance tools with the objective of developing highly efficient parallel programs.

[Translation missing: page.coursepage.goal]

Knowledge and Understanding - List the different types of parallel computer architectures, programming models and paradigms, as well as different schemes for synchronization and communication. - List the typical steps to parallelize a sequential algorithm - List different methods for analysis methodologies of parallel program systems Competence and skills - Apply performance analysis methodologies to determine the bottlenecks in the execution of a parallel program - Predict the upper limit to the performance of a parallel program Judgment and approach - Given a particular software, specify what performance bottlenecks are limiting the efficiency of parallel code and select appropriate strategies to overcome these bottlenecks - Design energy-aware parallelization strategies based on a specific algorithms structure and computing system organization - Argue which performance analysis methods are important given a specific context

[Translation missing: page.coursepage.content]

The course consists of a set of lectures and laboratory sessions. The lectures start with an overview of parallel computer architectures and parallel programming models and paradigms. An important part of the discussion are mechanisms for synchronization and data exchange. Next, performance analysis of parallel programs is covered. The course proceeds with a discussion of tools and techniques for developing parallel programs in shared address spaces. This section covers popular programming environments such as pthreads and OpenMP. Next the course discusses the development of parallel programs for distributed address space. The focus in this part is on the Message Passing Interface (MPI). Finally, we discuss programming approaches for executing applications on accelerators such as GPUs. This part introduces the CUDA (Compute Unified Device Architecture) programming environment.

The lectures are complemented with a set of laboratory sessions in which participants explore the topics introduced in the lectures. During the lab sessions, participants parallelize sample programs over a variety of parallel architectures, and use performance analysis tools to detect and remove bottlenecks in the parallel implementations of the programs.

[Translation missing: page.coursepage.organization]

The teaching consists of theory-oriented lectures and lab sessions in which the participants develop code for different types of parallel computer systems

[Translation missing: page.coursepage.literature]

Parallel Programming for Multicore and Cluster Systems, Thomas Rauber, Gudula Rünger (2nd edition, 2013)  https://www.springer.com/gp/book/9783642378003

[Translation missing: page.coursepage.examination]

The course is examined by an individual written exam that is carried out in an examination hall and a laboratory report written in groups of two.

The final grade of the course is based on the weighted average of the grades of the individual subcourses. Each individual subcourse will be graded on a scale of F,3,4,5

[Translation missing: page.coursepage.footnoteexamination]