Overordnede kursusmål
Dette kursus udstyrer studerende med de væsentligste færdigheder
til effektivt at skrive programmer til parallelle computere. Med
nogle få undtagelser er langt størstedelen af alle
computersystemer parallelle. Mange applikationer mangler at udnytte
den tilgængelige processorkraft på grund af ineffektive programmer.
Kurset giver en bred introduktion til distribueret og parallel
programmering med fokus på praktisk anvendelig viden. I kurset vil
industristandarder for parallelprogrammering, såsom OpenMP, blive
introduceret.
Kurset er praktisk med mange små programmeringsøvelser. Fundamental
og praktisk teori vil blive studeret. Studerende vil også blive i
stand til at måle ydeevnen af parallelle systemer.
Et af kursets mål er at studerende vil blive i stand til at løse
simple parallelle programmeringsopgaver, såsom at lave et program
race free og tage små dele af et sekventiel program og gøre det
parallelt ved brug af industristandard parallelle
programmeringssystemer.
Læringsmål
En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
- skrive små distribuerede- og parallelprogrammer ved hjælp af
industristandard parallelprogrammeringssystemer.
- udnytte samspillet mellem hardware (CPU, hukommelseshierarki og
I/O) og softwarekomponenter (biblioteker) til at forbedre
programmernes ydeevne.
- bruge synkroniseringsmekanismer til at skrive race-free
programmer.
- forklare de grundlæggende ydeevneaspekter af moderne parallelle
computersystemer.
- måle ydeevnen af parallele programmer og computersystemer.
- forklare performance-påvirkningen af
hukommelseshierarkiet.
- forklare hvilke dele af et computersystem, der påvirker
ydeevnen for et givent program.
- identificere for et givet program flaskehalse for ydeevne i et
computersystem.
Kursusindhold
Computer systemer: multi-core systemer; distribuerede systemer;
cache og
hukommelseshierarki effekter; måling af ydeevne.
Programmeringsparadigmer: "message passing"; delt
hukommelse.
Tråd og proces synkronisering: asynkron og synkron "message
passing";
interproceskommunikation; gensidig udelukkelse; kapløb(race
conditions).
Programeringsmønstre: fork-join; leader-follower.
Programmeringssystemer: MPI, OpenMP.
Sidst opdateret
02. maj, 2025