Course syllabus
Multicoreprogrammering
Multicore Programming
EDAN25, 6 credits, A (Second Cycle)
Valid for: 2012/13
Decided by: Education Board 1
Date of Decision: 2012-03-19
General Information
Elective for: D4, D4-is, D4-pv, F4, Pi4, Pi4-pv
Language of instruction: The course will be given in Swedish
Aim
The purpose of the course is that the students should use
knowledge from the course EDAF15 Algorithm Implementation when
writing software for multicores, ie to learn how to implement an
algorithm as efficiently as possible on a particular multicore
computer, both on a traditional multiprocessor with shared memory,
and on multicores where communication is handled explicitly by
software, e.g. as with DMA on the Cell processor, and to understand
advantages and disadvantages of these two multicore
architectures.
Learning outcomes
Knowledge and understanding
For a passing grade the student must
- understand how cache memories work on multicores
- understand the importance of reducing the number of cache
misses
- understand the importance of load-balancing between different
processors
- understand how the Cell processor and its DMA-based
communication works
- understand how a sequential C program can be parallelised while
taking the above into consideration
- understand advantages and disadvantages of these two multicore
architectures with respect to (1) performance and (2) how
complicated the programming becomes
Competences and skills
For a passing grade the student must
- be able to use Pthreads to create threads and synchronise these
on a multiprocessor
- be able to use OpenMP to parallelise compute intensive
sequential C programs
- be able to use the DMA primitives of the Cell processor such
that each core performs computation and communication
concurrently
- be able to improve the performance of a given sequential
program by parallelising it in a way which maximises its
performance, both on a traditional multiprocessor and on the Cell
processor
Judgement and approach
For a passing grade the student must
- be able to implement a suitable version of an algorithm while
taking into account both the demands of the application and the
multicore architecture.
- be able to judge which multicore architecture is suitable for a
given algorithm.
Contents
Multiprocessors, classification of cache misses, decomposition
of the computation into tasks. Assignment of tasks to threads.
Mapping of threads to processors. Programming models,
synchronisation, and communication. Owner computes rule. Memory
consistency models. Sequential consistency. Weak ordering. Release
consistency, Pthreads, OpenMP, the Cell processor, current research
trends in multiprocessor computer architecture.
Examination details
Grading scale: TH
Assessment: Written exam. To pass the course, the exam, laboratory exercises, and a programming assignment must be passed. The final grade of the course is based om the result of the written exam.
Admission
Admission requirements:
- EDAA01 Programming - Second Course or EDA027 Algorithms and Data Structures, and the compulsory course items in EDAF15 Algorithm Implementation
The number of participants is limited to: No
The course overlaps following course/s: EDA116
Reading list
- Jonas Skeppstedt and Christian Söderberg: Writing Efficient C Code: A Thorough Introduction for Java Programmers. Skeppberg, 2011, ISBN: 9197794007.
Contact and other information
Course coordinator: Jonas Skeppstedt, jonas.skeppstedt@cs.lth.se
Course homepage: http://cs.lth.se/edan25