2014/2015

62557 Parallel Programming

Engelsk titel:

Parallel Programming

Sprog:

Point( ECTS )

7,5

Kursustype:

Diplomingeniør
 

Skemaplacering:

F2B (tors 8-12)
E5A (ons 8-12)

Undervisningens placering:

Campus Ballerup

Undervisningsform:

Teori kombineret med praktiske programmeringsøvelser og obligatoriske kursusopgaver (assignments).

Kursets varighed:

13-uger

Eksamensplacering:

Aftales med underviser, Aftales med underviser, Eksamen afholdes i 2 ugers perioden,

Evalueringsform:

Bedømmelsesform:

Anbefalede forudsætninger:

Overordnede kursusmål:

Alle moderne computer-systemer er i større eller mindre grad parallelle systemer. For det første har de fleste computere to eller flere kerner (CPU'er) som gør det muligt at afvikle flere tråde samtidigt, og det forventes at computere i de nærmeste år vil få væsentligt flere kerner.
For det andet er alle computere forbundet til netværk med deraf følgende muligheder for samarbejde, som det f.eks. kendes fra client-server systemer eller fra cluster-systemer, hvor flere computere samarbejder om at løse opgaver, som kræver stor regnekraft eller håndtering af store datamængder.
For at udnytte sådanne parallelle systemarkitekturer skal programkoden kunne skaleres enten som tråde fordelt på flere processorer med fælles lager eller som et eller flere programmer fordelt på flere netværksopkoblede computere.
Formålet med dette kursus at give begrebsmæssig og praktisk forståelse af parallelle systemer og de problemstillinger, som er forbundet med udvikling af programmer til sådanne systemer; så som at identificere parallelliseringsmuligheder i software-designet, opdeling i parallelle aktiviteter og parallelle aktiviteters deling af data.

Læringsmål:

En studerende, der fuldt ud har opfyldt kursets mål, vil kunne:
  • redegøre for forskellige systemarkitekturer og dertil relaterede programmeringsmodeller som de defineres i Flynns taksonomi.
  • redegøre for Amdahls og Gustafsons love for opnåelig gevinst ('speed-up') ved parallellisering.
  • identificere og forklare væsentlige 'concurrency problems' i parallelle programmer og redegøre for klassiske synkroniserings- og kommunikationsmekanismer
  • kende principper for design og realisering af programmer til SIMD og MIMD arkitekturer.
  • redegøre for begreberne 'fine grain', 'medium grain' og 'coarse grain' parallellitet og relatere dem til programmeringsmodellerne og programudformning.
  • analysere programmeringsopgaver med henblik på parallellisering ved 'functional decomposition' eller 'data decomposition'.
  • redegøre for kendte parallelle algoritmeskabeloner ('algorithm patterns').
  • realisere parallelle aktiviteter ved brug af tråde og processer.
  • redegøre for formelle metoder til verifikation af parallel programmer.
  • anvende formelle metoder til verifikation af parallelle programmer

Kursusindhold:

Parallelle arkitekturer - Flynns taksonomi.
Parallelprogrammering: procesmodel, synkronisering, gensidig udelukkelse, kommunikation
Parallelle programmeringsmodeller (fælles lager, tråde, message passing, SPMD, MPMD).
Design af parallelle algoritmer.
Partitionering og dekomposition.
Parallelle algoritmeskabeloner.
Design og implementering af parallelle algoritmer til SIMD computere.
MIMD Programmering - UMA modellen
MIMD programmering - NUMA modellen: message passing, asynkron og synkron kommunikation
Verifikation af parallelle programmer.

Litteraturhenvisninger:

Diverse noter om parallelprogrammering, Pthreads, OpenMP og OpenMPI.
Multithreaded Programming Guide, Sun Microsystems. (pdf document)

Lærebog: Meddeles ved kursusstart.

Bemærkninger:

Den studerende skal i løbet af kurset løse et antal obligatoriske opgaver. Til hver opgave skal udarbejdes en øvelsesrapport som opsummerer teorien og beskriver den udarbejdede løsning og eventuelle måleresultater.

Kursusansvarlig:

Svend Mortensen , Ballerup Campus, Bygning Ballerup, Tlf. (+45) 3588 5172 , svmo@dtu.dk

Institut:

62 DTU Diplom

Kursushjemmeside:

-

Tilmelding:

I CampusNet
Sidst opdateret: 10. juni, 2015