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.