Since a few years back, programming means programming for parallel computers. Therefore, this course is essential for anyone who needs to write future-proof software, software which will continue to execute faster with next generation of hardware. Previously, the next generation of hardware meant higher clock frequency and higher performance for all programs. Now it means more parallel compute cores and a wider range of different cores.
Starting from a threads level perspective, this course will give you insight on the use and implementation of modern parallel computing frameworks, modern parallel computer architectures and tools for using them. It is not a course about supercomputers and traditional HPC programming, although supercomputer users should find it interesting as well.
Course offering missingCourse offering missing for current semester as well as for previous and coming semesters
Information for research students about course offerings
There is a research level course variant of this with course code IS3200 which is the same course but with 10 hp credits and a higher requirement on the project.
Content and learning outcomes
- Structured parallel programming using parallel patterns and modern parallel programming frameworks
- Implementation of parallel programming frameworks
- Fundamental parallel computer architecture and their effect on performance. Cache coherence, implementation of synchronization primitives, memory models etc.
- Heterogeneous parallel architectures and programming models for heterogeneous systems (e.g. OpenCL/CUDA, accelerator programming)
- Performance models and tools. Race detectors, Parallel performance analyzers.
Intended learning outcomes
The goals of this course is that the student should:
- understand and be competent in formulating problems for parallel execution,
- have knowledge about the principles of the design of modern parallel computer systems, and
- understand how the performance of a parallel computer is affected by:
- the particular system architecture,
- the partitioning of an application and the programming model
Flipped classroom lectures. All lecture material is given on the web with quizzes to be done at home or in class followed by discussions on quiz results and problem oriented lecturing.
Literature and preparations
Previous course in basic programming with threads and/or processes. E.g. ID1217 at KTH.
Basic knowledge in computer organization and programming with threads. Solid programming knowledge. This is for example given through courses IS1200 Computer hardware engineering, and ID1217 Concurrent programming.
Access to own computer (preferably x86-64 Linux) computer with KTH IP-number.
Bestäms en månad före kursstart och annonseras på kursens hemsida. Målet är att all kurslitteratur ska vara tillgänglig på webben antingen från publika källor eller via KTH:s bibliotek.
To be determined at course web site one month before start of the course. The aim is to have all course literature available from open or KTH Library sources.
Examination and completion
If the course is discontinued, students may request to be examined during the following two academic years.
A, B, C, D, E, FX, F
- PRO1 - Projedt, 3,0 hp, betygsskala: A, B, C, D, E, FX, F
- TEN1 - Examination, 4,5 hp, betygsskala: A, B, C, D, E, FX, F
Based on recommendation from KTH’s coordinator for disabilities, the examiner will decide how to adapt an examination for students with documented disability.
The examiner may apply another examination format when re-examining individual students.
Written exam 4,5 hp.
Hand-in assignment 3 hp.
Other requirements for final grade
Completed written exam and hand-in assignment.
The hand-in assignment may contain one or more of the following components:
- In-class participation
- Home-work assignments
- Programming project with written report
- Oral presentation
- Peer assessment
Opportunity to complete the requirements via supplementary examination
No information inserted
Opportunity to raise an approved grade via renewed examination
No information inserted
- All members of a group are responsible for the group's work.
- In any assessment, every student shall honestly disclose any help received and sources used.
- In an oral assessment, every student shall be able to present and answer questions about the entire assignment and solution.
Further information about the course can be found on the Course web at the link below. Information on the Course web will later be moved to this site.Course web IS2200
Main field of study
No information inserted
IS2202 Computer Systems Architecture.
Degree projects in computer systems.