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).

Professors

Responsable

  • Eduard Ayguadé Parra ( )

Altres

  • Lluc álvarez Martí ( )

Hores setmanals

Teoria
1
Problemes
1
Laboratori
2
Aprenentatge dirigit
0.4
Aprenentatge autònom
5.6

Competències

Competències Transversals

Actitud adequada davant el treball

  • G8 - 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. L'alumne ha de ser capaç d'escriure i entendre programes paral·lels usant la interfície de baix nivell Pthreads.
    Related competences: CEC2.2,
  2. L'alumne ha de ser capaç de implementar les funcionalitats bàsiques en una llibreria que doni suport a l'execució paral·lela d'aplicacions en arquitectures de memoria compartida.
    Related competences: CT8.7, CEC2.2, G8.3,
  3. L'alumne ha de ser capaç 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.
    Related competences: CEC2.1, G8.3,
  4. L'alumne ha de ser capaç d'escriure aplicacions senzilles usant el model de programació MPI, avaluar-ne el rendiment, i detectar les parts crítiques que limiten l'escalabilitat.
    Related competences: CEC2.2, G8.3,
  5. L'alumne ha de ser capaç d'avaluar la qualitat d'una solució proposada a un problema específic
    Related competences: G8.3,
  6. L'alumne ha de ser capaç 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ó
    Related competences: G8.3,

Continguts

  1. Programació paral·lela amb Pthreads
    Introducció a les funcionalitats bàsiques que ofereix la llaberia de suport de baix nivell Pthreads
  2. 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
  3. 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.
  4. 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.

Activitats

Activitat Acte avaluatiu


POSIX threads (Pthreads)


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

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

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

Components i disseny d'una arquitectura clúster

-
Objectius: 3 6
Continguts:
Teoria
4h
Problemes
4h
Laboratori
6h
Aprenentatge dirigit
4h
Aprenentatge autònom
20h

Altres models de programació paral·lela: MPI

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

Exàmen Final


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

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 dels lliuraments de problemes realitzats a classe i presentacions del treballs. En cas que un alumne no superi la parte teórica (T < 5), o vulgui millorar la nota obtinguda, haurà de fer un exàmen final que determinarà la nova nota dels continguts teòrics T.

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ó y la motivació d'anar més enllà del que es demana o per explorar temes adicionals. S'obté a partir del treball realitzat per l'alumne en aquelles pràctiques de laboratori on es requerixi cercar informació adicional y/o realitzar parts optatives/lliures.

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

Bibliografia

Bàsica:

Web links

Capacitats prèvies

Definides pels pre-requisits de l'assignatura