Programació i Arquitectures Paral·leles

Esteu aquí

Crèdits
6
Tipus
Complementària d'especialitat (Enginyeria de Computadors)
Requisits
  • Prerequisit: PAR
Departament
AC
En aquesta assignatura s'aprofundeix en els temes de paral·lelisme estudiats a l'assignatura PAR. En concret es treballen tres aspectes: 1) implementació d'un model de programació de memòria compartida tipus OpenMP, fent ús dels mecanismes oferts per una llibreria de threads de baix nivell (Pthreads) i la generació de codi per part d'un compilador (gcc); 2) disseny d'un clúster de memòria distribuïda a partir dels components bàsics: nodes multiprocessador/multicore, acceleradors, interfícies de xarxa i altres components per crear la xarxa d'interconnexió; i 3) estudiar un model de programació per arquitectures clúster (MPI).

Professorat

Responsable

  • Eduard Ayguadé Parra ( )

Hores setmanals

Teoria
1
Problemes
1
Laboratori
2
Aprenentatge dirigit
0
Aprenentatge autònom
6

Competències

Competències Transversals

Actitud adequada davant el treball

  • G8 [Avaluable] - Tenir motivació per a la realització professional i per a afrontar nous reptes, tenir una visió àmplia de les possibilitats de la carrera professional en l'àmbit de l'enginyeria en informàtica. Sentir-se motivat per la qualitat i la millora contínua, i actuar amb rigor en el desenvolupament professional. Capacitat d'adaptació als canvis organitzatius o tecnològics. Capacitat de treballar en situacions de carència d'informació i/o amb restriccions temporals i/o de recursos.
    • G8.3 - Estar motivat pel desenvolupament professional, per a afrontar nous reptes i per la millora contínua. Tenir capacitat de treball en situacions de falta d'informació.

Competències Tècniques de cada especialitat

Especialitat enginyeria de computadors

  • CEC2 - Analitzar i avaluar arquitectures de computadors incloent plataformes paral·leles i distribuïdes, i desenvolupar i optimitzar software per a aquestes plataformes.
    • CEC2.1 - Analitzar, avaluar, seleccionar i configurar plataformes hardware per al desenvolupament i l'execució d'aplicacions i serveis informàtics.
    • CEC2.2 - Programar considerant l'arquitectura hardware, tant en assemblador com en alt nivell.

Competències Tècniques

Competències tècniques comunes

  • CT8 - Planificar, concebre, desplegar i dirigir projectes, serveis i sistemes informàtics en tots els àmbits, liderar-ne la posada en marxa, la millora contínua i valorar-ne l'impacte econòmic i social.
    • CT8.7 - Controlar versions i configuracions del projecte.

Objectius

  1. Capacitat d'escriure i entendre programes paral·lels usant la interfície de baix nivell Pthreads.
    Competències relacionades: CEC2.2,
  2. Capacitat d'implementar les funcionalitats bàsiques en una llibreria que doni suport a l'execució paral·lela d'aplicacions en arquitectures de memoria compartida.
    Competències relacionades: G8.3, CT8.7, CEC2.2,
  3. Capacitat d'entendre els components bàsics que formen una arquitectura multiprocessador, aixi com fer-ne un disseny sobre paper que obeeixi a determinats criteris de disseny.
    Competències relacionades: G8.3, CEC2.1,
  4. Capacitat d'escriure aplicacions senzilles usant el model de programació MPI, avaluar-ne el rendiment, i detectar les parts crítiques que limiten l'escalabilitat.
    Competències relacionades: G8.3, CEC2.2,
  5. Capacitat d'avaluar la qualitat d'una solució proposada a un problema específic
    Competències relacionades: G8.3,
  6. Capacitat de complertar o ampliar els coneixements adquirits de forma autònoma i realitzar un treball específic tot i que l'enunciat sigui incomplert, o manqui informació rellevant per la seva implementació
    Competències relacionades: G8.3,

Continguts

  1. MPI: programació paral·lela per arquitectures de memòria distribuïda
    En aquest tema aprendrem a programar aplicacions paral·leles usant MPI, un model de programació basat en pas de missatges per arquitectures clúster de memòria distribuïda.
  2. Programació paral·lela amb Pthreads
    Introducció a les funcionalitats bàsiques que ofereix la llaberia de suport de baix nivell Pthreads
  3. Implementació d'un model de programació de memòria compartida: threads i sincronització, repartiment de treball i model de tasques
    En aquest tema aprendrem com dissenyar i implementar una llibreria que doni suport a l'execució de programes paral·lels en OpenMP, en concret els mecanismes relacionats amb la gestió de threads i sincronització, el repartiment del treball en els OpenMP "worksharing constructs" i el model d'execució basat en tasques
  4. Components i disseny d'una arquitectura clúster
    En aquest tema es presentaran els components principals que formen una arquitectura clúster i farem un disseny en base a un compromís de potencia de càlcul, consum d'energia i cost.

Activitats

Activitat Acte avaluatiu


Programació paral·lela amb pas de missatges: MPI

-
Objectius: 4 5 6
Continguts:
Teoria
5h
Problemes
5h
Laboratori
12h
Aprenentatge dirigit
0h
Aprenentatge autònom
36h

POSIX threads (Pthreads)


Objectius: 1
Continguts:
Teoria
3h
Problemes
3h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
12h

Implementació d'un model de programació de memòria compartida

-
Objectius: 1 2 5 6
Continguts:
Teoria
2h
Problemes
2h
Laboratori
16h
Aprenentatge dirigit
0h
Aprenentatge autònom
30h

Components i disseny d'una arquitectura clúster

-
Objectius: 3 6
Continguts:
Teoria
3h
Problemes
5h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
12h

Exàmen Final


Objectius: 1 2 3 4
Setmana: 15 (Fora d'horari lectiu)
Tipus: examen de teoria
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
0h

Metodologia docent

Les classes de teoria introdueixen tots els coneixements, les tècniques, i els conceptes necessaris, usant exemples de codi reals o pseudo-codi. Les classes de teoria es complementen amb les classes de problemes, on es plantejaran i resoldran problemes exercicis pràctics. Al laboratori es posen en pràctica els continguts teòrics, i es fa una avaluació de comportament i rendiment de los solucions proposades.

L'assignatura contempla que part dels continguts teórics, o dels enunciats de laboratori, els haurà de desenvolupar l'estudiant de forma autònoma.

El curs está principalment centrat en les arquitectures clúster, utilitzant el llenguatge de programació C, la llibreria Pthreads i els models de programació OpenMP i MPI.

Mètode d'avaluació

La nota de l'assignatura es calcula a partir de 3 notes:
- nota de continguts teòrics;
- nota de laboratori;
- nota d'autonomia i motivació.

La nota de continguts teòrics (T) s'obté a partir de les notes d'un control (50%) i de l'examen final (50%). La nota de laboratori (L) s'obté a partir de les notes dels lliuraments i el seguiment de les sessions de pràctiques per part del professor.

La nota d'autonomia i motivació (A) avalua la capacitat de l'alumne per enfrontar-se a situacions de manca d'informació i la motivació d'anar més enllà del que es demana o per explorar temes addicionals. S'obté a partir del treball fet per l'alumne en aquelles pràctiques de laboratori on es requereixi cercar informació addicional i/o realitzar parts optatives/lliures.

La nota final es calcula F = T * 0.4 + L * 0.4 + A * 0.2.

Bibliografia

Bàsica:

Complementaria:

  • Unit 1: POSIX Threads (Pthreads) programming - Ayguadé, Eduard, Departament d'Arquitectura de Computadors , 2021.
  • Unit 2: Build (on paper) your own cluster architecture - Ayguadé, Eduard, Departament d'Arquitectura de Computadors , 2021.
  • Unit 3: MPI (Message Passing Interface) - Ayguadé, Eduard, Departament d'Arquitectura de Computadors , 2021.
  • Laboratory assignments: Lab 1 - OpenMP parallelisation of Eratosthenes Sieve - Ayguadé, Eduard, Departament d'Arquitecture de Computadors , 2023.
  • Laboratory assignments: Lab2 - Implementing a minimal OpenMP runtime - Ayguadé, Eduard, Departament d'Arquitectura de Computadors , 2021.
  • Laboratory assignments: Lab 3 - Performance characteritzation of HPC clusters - Ayguadé, Eduard ; Àlvarez, Lluc, Departament d'Arquitectura de Computadors , 2023.
  • Laboratory assignments: Lab 4 - Heat equation using MPI - Ayguadé, Eduard ; Àlvarez, Lluc, Departament d'Arquitectura de Computadors , 2023.

Web links

Capacitats prèvies

Definides pels pre-requisits de l'assignatura