Kursussøgning, efter- og videreuddannelse – Københavns Universitet

Videresend til en ven Resize Print Bookmark and Share

Kursussøgning, efter- og videreuddannelse

Programming Massively Parallel Hardware (PMPH)

Practical information
Study year 2016/2017
Block 1
Programme level Full Degree Master
Course responsible
  • Cosmin Eugen Oancea (13-677377716d723273657267696544686d326f7932686f)
  • Department of Computer Science
Course number: NDAK14008U

Course content

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 quickly write  programs that run fast).

The course reviews the levels at which hardware exposes parallelism, the constraints at each level, the main tradeoffs and the potential bottlenecks, and studies the critical components of parallel hardware: processor, memory (cache) hierarchy and interconnect networks.

The course introduces the map-reduce programming model, which is used to fully express available parallelism, and to reason about asymptotic properties of parallel programs (in terms of work and depth). The course then introduces several lower-level programming interfaces, such as OpenMP, OpenCL, and gives practical instructions to implementing, testing, and optimizing parallel programs written in these interfaces.

Finally, the course highlights how hardware differences influence the way in which the program is optimized, and studies several composible code transformations that have been found effective to implement parallelism. These can be seen as recipees for optimizing the application's degree of parallelism and locality of reference.

Learning outcome


  • tthe main differences in various parallel hardware, and how these influence the way the code is optimized/tuned.
  • the (in)correctness of (specific instances of) loop parallelization and related optimizations.
  • how to guide, in specific instances, the application of such optimizations, and the (data-sensitive) tradeoffs that are exploited.


  • 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).


  • for a given application and parallel hardware, identify an effective parallelization solution.


Recommended prerequisites

The course syllabus assumes basic knowledge of hardware architecture, programming languages, compilers, data-structures and algorithms, linear algebra, and most importantly programming competences in C/C++ (and optionally Haskell). For example, at DIKU, these can be acquired through the corresponding BSc courses (or through self study).

Sign up

As an exchange, guest and credit student - click here!

Continuing Education - click   here!


MSc Programme in Computer Science
MSc Programme in Bioinformatics


Study Board of Mathematics and Computer Science

Course type

Single subject courses (day)


1 block


---- SKEMA LINK ----

Teaching and learning methods

Lectures, in-class exercises, group work on programming and analysis assignments and project.


No limit




The course does not use a textbook, but instead provides tutorials, scientific papers, and selected material from several books (available from the course pages).
For example, several hardware-related topics were selected from the book Parallel Computer Organization and Design, by Michel Dubois, Murali Annavaram and Per Stenstrom,  ISBN 978-521-88675-8. Cambridge University Press, 2012.  


Category Hours
Lectures 32
Preparation 48
Exercises 61
Project work 64
Exam 1
English 206


Type of assessment

Continuous assessment
Four individual assignments (32%), group project (report) with individual presentation (68%).

Marking scale

7-point grading scale

Criteria for exam assessment

see learning goals

Censorship form

No external censorship
several internal examiners


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%).

Mere information om kurset
Er du BA- eller KA-studerende?
Er du bachelor- eller kandidat-studerende, så find dette kursus i kursusbasen for studerende:

Kursusinformation for indskrevne studerende