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
Capacitat d'escriure i entendre programes paral·lels usant la interfície de baix nivell Pthreads.
Competències relacionades:
CEC2.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:
CT8.7,
CEC2.2,
G8.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:
CEC2.1,
G8.3,
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:
CEC2.2,
G8.3,
Capacitat d'avaluar la qualitat d'una solució proposada a un problema específic
Competències relacionades:
G8.3,
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
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.
Programació paral·lela amb Pthreads
Introducció a les funcionalitats bàsiques que ofereix la llaberia de suport de baix nivell Pthreads
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
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.
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%). Aquestes proves podran substituir-se per la realització, lliurament i discussió d'un mínim del 70% dels problemes demanats durant les classes de teoria.
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: 1) aquelles pràctiques de laboratori on es requereixi cercar informació addicional i/o realitzar parts optatives/lliures; i 2) en el disseny d'un clúster HPC sobre paper.
La nota final es calcula F = T * 0.4 + L * 0.4 + A * 0.2.