Kursplan för Hög-prestanda parallell programmering

Kursplan fastställd 2024-01-23 av programansvarig (eller motsvarande).

Kursöversikt

  • Engelskt namnHigh-performance parallel programming
  • KurskodDAT400
  • Omfattning7,5 Högskolepoäng
  • ÄgareMPHPC
  • UtbildningsnivåAvancerad nivå
  • HuvudområdeDatateknik, Informationsteknik
  • InstitutionDATA- OCH INFORMATIONSTEKNIK
  • BetygsskalaTH - Mycket väl godkänd (5), Väl godkänd (4), Godkänd (3), Underkänd

Kurstillfälle 1

  • Undervisningsspråk Engelska
  • Anmälningskod 86118
  • Max antal deltagare80 (minst 10% av platserna reserveras för utbytesstudenter)
  • Blockschema
  • Sökbar för utbytesstudenterJa

Poängfördelning

0119 Laboration 3 hp
Betygsskala: UG
3 hp0 hp0 hp0 hp0 hp0 hp
0219 Tentamen 4,5 hp
Betygsskala: TH
4,5 hp0 hp0 hp0 hp0 hp0 hp
  • 31 Okt 2024 fm J
  • 07 Jan 2025 fm J
  • 25 Aug 2025 fm J

I program

Examinator

Gå till kurshemsidan (Öppnas i ny flik)

Behörighet

Grundläggande behörighet för avancerad nivå
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Särskild behörighet

Engelska 6
Sökande med en programregistrering på ett program där kursen ingår i programplanen undantas från ovan krav.

Kursspecifika förkunskaper

Kursen DAT017 - Machine oriented programming eller liknande kurs är ett krav. Kursen TDA384 - Principer för parallell programmering är rekommenderad.

Syfte

Kursen behandlar parallella programmeringsmodeller, effektiva programmeringsmetoder och verktyg för prestandaoptimering med målet att utveckla högeffektiva parallella program. Ett ytterligare syfte är att eleverna ska göra etiska överväganden av sitt arbete.

Lärandemål (efter fullgjord kurs ska studenten kunna)

Kunskap och förståelse
  • Lista de olika typerna av parallella datorarkitekturer, programmeringsmodeller och paradigm, samt olika system för synkronisering och kommunikation. 
  • Lista de typiska stegen för att parallellisera en sekventiell algoritm 
  • Ange olika metoder för analysmetoder av parallella programsystem 
Färdighet och förmåga
  • Använda metoder för prestandaanalys för att bestämma flaskhalsarna vid exekverandet av ett parallellt program 
  • Bestämma den övre gränsen för prestanda för ett parallellt program 
  • förmåga att samarbeta i olika gruppsammansättningar med gruppmedlemmar med olika kompetens, kulturell och utbildningsbakgrund, kön och nationalitet
  • Studenten ska kunna göra och försvara etiska bedömningar i allmänhet och i synnerhet inom området högpresterande datorsystem
Värderingsförmåga och förhållningssätt
  • För en specifik programvara, specificera de resultat flaskhalsar som begränsar effektiviteten hos parallellkoden och välj lämpliga strategier för att övervinna dessa 
  • Utforma energibesparande parallelliseringsstrategier baserade på en specifik algoritm struktur och datorsystemsorganisation 
  • Argumentera för vilka metoder för prestandaanalys som är viktiga, givet en specifik kontext

Innehåll

Kursen består av ett antal föreläsningar och laborationer. Föreläsningarna börjar med en översikt över parallella datorarkitekturer och parallella programmeringsmodeller och paradigmer. En viktig del av diskussionen är mekanismer för synkronisering och datautbyte. Därefter behandlas prestandaanalys av parallella program. Kursen fortsätter med en diskussion om verktyg och tekniker för att utveckla parallella program enligt modellen för ett delat adressutrymme. Detta avsnitt behandlar populära programmeringsmiljöer som pthreads och OpenMP. Därefter diskuterar kursen parallella program för distribuerat adressutrymme. Fokus i denna del ligger på Message Passing Interface (MPI). Slutligen diskuterar vi programmeringsmetoder för att exekvera applikationer på acceleratorer såsom GPUer. Den här delen introducerar programmeringsmiljön CUDA (Compute Unified Device Architecture).

Föreläsningarna kompletteras med en uppsättning laborationer där deltagarna fördjupar sig i ämnesområden som har tagits upp under föreläsningar. Under laborationerna parallelliserar deltagarna exempelprogram över en rad parallella arkitekturer, och använder verktyg för prestandaanalys för att upptäcka och ta bort flaskhalsar i parallella implementeringar av programmen.

Det blir en föreläsning och kompletterande läsning om etik.

Organisation

Undervisningen består av teoriinriktade föreläsningar och laborationer där deltagarna utvecklar kod för olika typer av parallella datorsystem

Litteratur

Parallel Programming for Multicore and Cluster Systems, Thomas Rauber, Gudula Rünger (2nd edition, 2013) https://www.springer.com/gp/book/9783642378003

Examination inklusive obligatoriska moment

Kursen examineras genom individuell skriftligt tentamen samt en skriftlig rapport från laborationen som skall lämnas in i grupp. 

Genom en uppsättning extra uppgifter (läsa och sammanfatta artiklar samt aktiv deltagande i kursmoment) kan studenter samla bonuspoäng som bidrar till det individuella skriftliga tentamenbetyget.

Slutbetyget på kursen är detsamma som den skriftliga tentamen.  Laborationsrapporten måste vara godkänd för att få slutbetyg

Kursens examinator får examinera enstaka studenter på annat sätt än vad som anges ovan om särskilda skäl föreligger, till exempel om en student har ett beslut från Chalmers om pedagogiskt stöd på grund av funktionsnedsättning.