NDAK14008U Programming Massively Parallel Hardware
The aim of the course is to teach students how to efficiently
and effectively exploit parallel hardware, which is now mainstream
(i.e., how to write quickly programs that run fast).
The course gives an overview of various parallel hardware, such as
multi-core, GPU, etc., introduces several programming interfaces,
such as OpenMP, OpenCL, etc., and highlights how hardware
differences influence the way in which the program is optimized.
The lectures will give practical instructions to implementing,
testing, and optimizing/tuning parallel programs written in each of
the programming interfaces.
Several composible code transformations that have been found
effective in optimizing parallelism are introduced in the second
part of the course. These can be seen as recipees for optimizing
the application's degree of parallelism and locality of
reference.
Knowledge
- explain the main differences in various parallel hardware, and
how these influence the way the code is optimized/tuned.
- explain the (in)correctness of (specific instances of) loop
parallelization and related optimizations.
- explain, on specific instances, how to guide the application of such optimizations, and the (data-sensitive) tradeoffs that are exploited.
Skills
- implement parallel programs using different programming
interfaces, such as OpenMP, OpenCL
- test, profile, and tune the programs to efficiently take advantage of the parallel hardware (multicore, GPU).
Competences
- for a given application and parallel hardware, identify an effective parallelization solution.
The course does not use a textbook, but instead provide tutorials, scientific papers, and selected material from several books (available from the course pages).
- Category
- Hours
- Exam
- 1
- Exercises
- 61
- Lectures
- 32
- Preparation
- 48
- Project work
- 64
- Total
- 206
As
an exchange, guest and credit student - click here!
Continuing Education - click here!
- Credit
- 7,5 ECTS
- Type of assessment
- Continuous assessmentFour individual assignments (32%), group project (report) with individual presentation (68%).
- Marking scale
- 7-point grading scale
- Censorship form
- No external censorship
several internal examiners
- Re-exam
- Resubmission of (i) the (missing) assignments (25%) and (ii) the (missing) project extended with additional tasks (50%), and (iii) a 30 minutes oral examination (25%).
Criteria for exam assesment
see learning goals
Course information
- Language
- English
- Course code
- NDAK14008U
- Credit
- 7,5 ECTS
- Level
- Full Degree Master
- Duration
- 1 block
- Placement
- Block 1
- Schedule
- A (Tues 8-12 + Thurs 8-17)
- Course capacity
- no limit
- Continuing and further education
- Study board
- Study Board of Mathematics and Computer Science
Contracting department
- Department of Computer Science
Course responsibles
- Cosmin Eugen Oancea (13-6c787c76727737786a776c6e6a496d7237747e376d74)
Other potential teachers: Fabian Gieseke, Sarah Niebe
Lecturers
one teacher from APL and one from the image processing group, e.g., Cosmin Oancea, Marek Misztal or Stefan Sommer.