Introduktion till parallellprogrammering
Kursplan, Avancerad nivå, 1DL530
- Kod
- 1DL530
- Utbildningsnivå
- Avancerad nivå
- Huvudområde(n) med fördjupning
- Datavetenskap A1N, Inbyggda system A1N, Teknik A1N
- Betygsskala
- Med beröm godkänd (5), Icke utan beröm godkänd (4), Godkänd (3), Underkänd (U)
- Fastställd av
- Teknisk-naturvetenskapliga fakultetsnämnden, 9 mars 2017
- Ansvarig institution
- Institutionen för informationsteknologi
Behörighetskrav
120 hp varav 20 hp datavetenskap inklusive en fortsättningskurs i programmering i ett imperativt och objektorienterat språk och Algoritmer och datastrukturer I.
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.
Övriga föreskrifter
Kursen kan inte ingå i examen tillsammans med 1DL540 Programspråksabstraktioner för parallelprogrammering, 10hp, eller 1DT096 Operativsystem och processorienterad programmering.