Kursplan för Introduktion till parallellprogrammering

Introduction to Parallel Programming

Kursplan

  • 5 högskolepoäng
  • Kurskod: 1DL530
  • Utbildningsnivå: Avancerad nivå
  • Huvudområde(n) och successiv fördjupning: Datavetenskap A1N, Teknik A1N

    Förklaring av koder

    Koden visar kursens utbildningsnivå och fördjupning i förhållande till andra kurser inom huvudområdet och examensfordringarna för generella examina:

    Grundnivå
    G1N: har endast gymnasiala förkunskapskrav
    G1F: har mindre än 60 hp kurs/er på grundnivå som förkunskapskrav
    G1E: innehåller särskilt utformat examensarbete för högskoleexamen
    G2F: har minst 60 hp kurs/er på grundnivå som förkunskapskrav
    G2E: har minst 60 hp kurs/er på grundnivå som förkunskapskrav, innehåller examensarbete för kandidatexamen
    GXX: kursens fördjupning kan inte klassificeras.

    Avancerad nivå
    A1N: har endast kurs/er på grundnivå som förkunskapskrav
    A1F: har kurs/er på avancerad nivå som förkunskapskrav
    A1E: innehåller examensarbete för magisterexamen
    A2E: innehåller examensarbete för masterexamen
    AXX: kursens fördjupning kan inte klassificeras.

  • Betygsskala: Underkänd (U), godkänd (3), icke utan beröm godkänd (4), med beröm godkänd (5)
  • Inrättad: 2017-03-09
  • Inrättad av: Teknisk-naturvetenskapliga fakultetsnämnden
  • Reviderad: 2018-08-30
  • Reviderad av: Teknisk-naturvetenskapliga fakultetsnämnden
  • Gäller från: vecka 24, 2019
  • Behörighet: 120 hp varav 20 hp datavetenskap inklusive en fortsättningskurs i programmering i ett imperativt och objektorienterat språk och Algoritmer och datastrukturer I.
    Engelska 6. (Med en svensk kandidatexamen uppfylls kravet på engelska.)
  • Ansvarig institution: Institutionen för informationsteknologi

Mål

Efter godkänd kurs ska studenten kunna:

  • förklara centrala begrepp inom parallellprogrammering
  • skriva och modifiera program som använder trådar och lås för att utnyttja parallellism i delade minnen
  • redogöra för vanliga problem vid shared memory-programmering samt hur synkronisering kan användas för att undvika dessa
  • implementera lösningar till grundläggande synkroniseringsproblem
  • redogöra för olika konsistensmodeller och använda dessa för att diskutera korrekthet hos parallella program
  • identifiera möjligheter till parallellism i sekvensiella algoritmer och utnyttja dessa för att göra sekvensiella implementationer parallella.

Innehåll

Grundläggande begrepp inom concurrecy och parallellprogrammering, t ex uppsnabbning och parallell avmattning, Amdahls lag, Flynns taxonomi, instruktionsparallellism, dataoberoende. "Shared-memory concurrency" baserad på trådar och lås samt hur det används i språk som C++. Problem som kan uppkomma i samband med samtidighet, t.ex. synkronisering, icke-determinism, data race, dödläge, fairness. Synkroniseringsproblem, t.ex. producer-consumer, och tekniker för att lösa dessa. Konsistensmodeller som linearizability ochsekvesiell konsistens. Fork/join-ramverk. Task- och dataparallellism.

Undervisning

Föreläsningar, laborationer.

Examination

Muntlig och skriftlig examination av uppgifter. Skriftlig tentamen. 

Om särskilda skäl finns får examinator göra undantag från det angivna examinationssättet och medge att en enskild student examineras på annat sätt. Särskilda skäl kan t.ex. vara besked om särskilt pedagogiskt stöd från universitetets samordnare för studenter med funktionsnedsättning.

Övriga föreskrifter

Kursen kan inte ingå i examen tillsammans med 1DL540 Programspråksabstraktioner för parallelprogrammering, 10hp, eller 1DT096 Operativsystem och processorienterad programmering.

Litteratur

Litteraturlista

Gäller från: vecka 24, 2019

  • Maurice Herlihy. Nir Shavit., The Art of Multiprocessor Programming, Revised Reprint

    Morgan Kaufmann Publishers, 2012

    Se bibliotekets söktjänst