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

      Online:

    • Curs 17.01 - ora 16:00 - Webex - (laboratorul grupei de vineri se desfasoara la aceeasi adresa)
    • Curs: Bariere
    • Laborator: Bariere
  • Evaluare

Fisa disciplinei: in romana - in engleza

© 2024 Emanuel Onica. Parts of design by W3Layouts