Tehnici de Programare Multiprocesor / Multiprocessor Programming Techniques
-
Curs 1 - Laborator 1
- Introducere
- Recapitulare notiuni de baza pentru sincronizare - de la excludere mutuala la problemele producator/consumator si readers/writers
- Garantii specifice in programarea multiprocesor - vedere introductiva
- Importanta paralelizarii executiei - Legea lui Amdahl
- Laborator: Introducere in mediul de lucru. Programare multiprocesor in Java - recapitulare notiuni de baza.
-
Curs 2 - Laborator 2
- Executie concurenta - concepte generale
- Deadlock-freedom vs. Starvation-freedom in contextul excluderii mutuale
- Scurta introducere in modelul de memorie Java
- Laborator: Primitive de baza pentru sincronizare. Exercitii recapitulative.
-
Curs 3 - Laborator 3
- Obiecte concurente - concepte generale
- Modele de consistenta in contextul programarii multiprocesor: consistenta secventiala, linearizabilitate
- Conditii de progres pentru obiecte concurente
- Laborator: Recapitulare semafoare in Java. Exercitii privind excluderea mutuala si garantii asociate.
-
Curs 4 - Laborator 4
- Lacate (spin locks) I - aspecte generale, fenomenul de contention
- Test-and-set lock vs. Test-and-test-and-set lock
- Lacate bazate pe secvente de tip coada - introducere: Anderson lock
- Laborator: Tipuri atomice in Java. Exercitii privind progresul echilibrat (fairness). Exercitii privind linearizabilitatea.
-
Curs 5 - Laborator 5
- Lacate (spin locks) II - variante avansate
- Lacate bazate pe secvente de tip coada: Craig-Landin-Hagersten lock (CLH), Mellor-Crummey-Scott lock (MCS)
- Laborator: Propunerea unei teme legate de notiunile discutate in prima serie de cursuri. Operatii de coordonare folosind monitorul obiectelor si tipul Condition din Java.
-
Curs 6 - Laborator 6
- Liste cu acces concurent I - aspecte generale
- Lista cu sincronizare integrala
- Lista cu sincronizare per nod
- Lista cu sincronizare optimista
- Laborator: Variabile de tip ThreadLocal in Java. Exercitii legate de evaluarea eficientei si corectitudinii lacatelor.
-
Curs 7 - Laborator 7
- Liste cu acces concurent II - variante avansate
- Lista cu sincronizare lazy
- Lista cu sincronizare neblocanta
- Discutie comparativa privind diversele tipuri de liste cu acces concurent
- Laborator: Read-write locks.
-
Saptamana 8 - evaluare tema
-
Curs 8 - Laborator 8
- Cozi si stive cu acces concurent I - cozi
- Coada limitata cu sincronizare conditionata (partiala)
- Coada nelimitata cu sincronizare neblocanta (lock-free)
- Laborator: Exercitii legate de liste cu acces concurent.
-
Curs 9 - Laborator 9
- Cozi si stive cu acces concurent II - stive, problema ABA
- Problema ABA
- Stiva nelimitata cu sincronizare neblocanta (lock-free)
- Laborator: Imbunatatirea variantei de sincronizare optimista prin versionare.
-
Curs 10 - Laborator 10
- Structuri de hashing concurente
- Variante concurente de hash set: closed-address (lock-based si lock-free), open-address.
- Laborator: Exercitii legate de cozi cu acces concurent.
-
Curs 11 - Laborator 11
Online:
- Curs 20.12 - ora 16:00 - Webex - (laboratorul grupei de vineri se desfasoara la aceeasi adresa)
- Tehnici de paralelizare a procesarii - I
- Concepte generale si exemple. Impactul dat de schedulers
- Laborator: Exercitii recapitulative pentru structuri de date concurente
-
Curs 12 - Laborator 12
- Tehnici de paralelizare a procesarii - II
- Strategia de work stealing si structuri de date specifice (deques)
- Laborator: Exercitii legate de cozi cu acces concurent
-
Curs 13 - Laborator 13
- Curs 17.01 - ora 16:00 - Webex - (laboratorul grupei de vineri se desfasoara la aceeasi adresa)
- Curs: Bariere
- Laborator: Bariere
Online:
-
Evaluare
Fisa disciplinei: in romana - in engleza