Enginyeria en Informàtica (3371)
Taller de Software II(12484)
Descripció
Quines estratègies existeixen per paral·lelitzar un algoritme?
Com s'estudia la viabilitat d'un algoritme paral·lel?
Com es dissenya la interconnexió de processos?
Quin entorn de desenvolupament encaixa amb l'algoritme?
Objectius
Coneixer les principals característiques de les tecnologies de computació paral·lela actuals
Proporcionar una primera aproximació a les tècniques d'anàlisi de sistemes paral·lels
Obtindre una visió de conjunt sobre els sistemes d'interconnexió de processos
Coneixer els principis de funcionament dels diferents entorns de desenvolupament
Mètode d'Avaluació
Prova escrita a partir del contingut de les unitats didàctiques (40%)
Avaluació contínua a partir del resultat de les pràctiques (60%)
Temari
Tema 1: Models de programació paral·lela
1.1 Arquitectura de computadors paral·lels: Gerarquia de memòria i models de computació
1.2 Estrategies de desenvolupament: Compiladors, llenguatges, memòria compartida, missatges
i OO
1.3 Disseny d'algoritmes: Particionament, communicació, aglutinament i mapejat
1.4 Paradigmes de programació: Client/servidor, SPMD, pipelining i subdivisió
Tema 2: Anàlisi de sistemes paral·lels
2.1 Cadenes de Markov: M/M/1, M/M/m i sistemes de cues
2.2 Xarxes de Petri: Model, propietats i anàlisi
2.3 Simulació per esdeveniments: Planificador i interconnexió de components
2.4 Simulació de sistemes: Nivells de modelat i bancs de proves
Tema 3: Sistemes d'interconnexió
3.1 Xarxes convencionals: Nivells OSI i TCP/IP/Ethernet
3.2 Xarxes de baixa latencia: Myrinet, Memory Channel i CAN bus
3.3 Sistema de missatges: Estructures de dades, llistes i Tx/Rx
3.4 Programació de xarxes: Esdeveniments, connexions, configuració i streaming
Tema 4: Entorns de programació paral·lela
4.1 Mecanismes primaris: Semàfors, sockets i RPC
4.2 Entorns amb memòria compartida: memòria compartida pura i virtual
4.3 Entorns amb memòria distribuida: MPI, PVM, Corba i Java distribuit
4.4 Programació paral·lela: esquelets i patrons
Organització
Els continguts teòrics s'organitzen en unitats didàctiques accessibles des de l'aula global i
s'exposen amb transparències durant les sessions de laboratori
Els alumnes han de realitzar un estudi previ de les pràctiques i respectar els periode de
lliurament setmanal
Pràctiques
P1 - Mesusar l'impacte de la gerarquia de memòria, el planificador de tasques i la programació SIMD
en el temps d'execusió d'un algoritme
P2 - Desenvolupar un simulador per esdeveniments per verificar un sistema d'interconnexió
amb cues M/M/1
P3 - Modelar i avaluar un algoritme paral·lel mitjançant un simulador de sistemes
P4 - Programar serveis de xarxa amb C++
P5 - Comparar les prestacions de l'intercanvi de missatges amb sockets i memòria compartida
P6 - Desenvolupar una aplicació MPI sobre un cluster de maquines virtuals
Observacions
L'entrega de les pràctiques dins dels terminis establerts és indispensable per aprovar
l'assignatura.
Bibliografia
ANDRE S. TANENBAUM:
Computer Networks, Prentice Hall
D. C. SHMIDT, S. D. HUSTON:
C++ Network Programming, Addison-Wesley
R. K. JAIN:
The Art of Computer Systems Performance Analysis, John Wiley & Sons
RAJKUMAR BUYYA:
High Performance Cluster Computing, Prentice Hall.