Podcast
Questions and Answers
Care dintre următoarele descrie corect accesul la memorie în sistemele UMA?
Care dintre următoarele descrie corect accesul la memorie în sistemele UMA?
Ce tip de arhitectură de memorie este specific sistemelor NUMA?
Ce tip de arhitectură de memorie este specific sistemelor NUMA?
Care dintre următoarele topologii de rețea nu este menționată ca fiind utilizată în sistemele de calcul paralel?
Care dintre următoarele topologii de rețea nu este menționată ca fiind utilizată în sistemele de calcul paralel?
Ce tip de paralelism permite executarea simultană a mai multor instrucțiuni pe diferite seturi de date?
Ce tip de paralelism permite executarea simultană a mai multor instrucțiuni pe diferite seturi de date?
Signup and view all the answers
Ce caracteristică definește multiprocesarea la nivel de task, spre deosebire de multithreading?
Ce caracteristică definește multiprocesarea la nivel de task, spre deosebire de multithreading?
Signup and view all the answers
Care dintre următoarele NU este un beneficiu al calculului paralel și distribuit?
Care dintre următoarele NU este un beneficiu al calculului paralel și distribuit?
Signup and view all the answers
Care dintre următoarele afirmații despre variabilele atomice este adevărată ?
Care dintre următoarele afirmații despre variabilele atomice este adevărată ?
Signup and view all the answers
Care dintre următoarele poate fi considerat un mecanism de sincronizare ?
Care dintre următoarele poate fi considerat un mecanism de sincronizare ?
Signup and view all the answers
Care dintre următoarele este un exemplu de condiție de cursă în contextul specificat?
Care dintre următoarele este un exemplu de condiție de cursă în contextul specificat?
Signup and view all the answers
Ce este o secțiune critică?
Ce este o secțiune critică?
Signup and view all the answers
Ce rol au semafoarele în sincronizarea proceselor ?
Ce rol au semafoarele în sincronizarea proceselor ?
Signup and view all the answers
Care este diferența dintre un semafor binar (Mutex) și un semafor generic?
Care este diferența dintre un semafor binar (Mutex) și un semafor generic?
Signup and view all the answers
Care dintre următoarele opțiuni descrie corect funcționarea semaforului binar (Mutex) ?
Care dintre următoarele opțiuni descrie corect funcționarea semaforului binar (Mutex) ?
Signup and view all the answers
Care dintre următoarele exemple este un exemplu de utilizare a barierei în sincronizarea proceselor ?
Care dintre următoarele exemple este un exemplu de utilizare a barierei în sincronizarea proceselor ?
Signup and view all the answers
Ce este o variabilă atomică?
Ce este o variabilă atomică?
Signup and view all the answers
Care dintre următoarele reprezintă o limitare a programării secvențiale legată de viteza de transmisie a datelor?
Care dintre următoarele reprezintă o limitare a programării secvențiale legată de viteza de transmisie a datelor?
Signup and view all the answers
Care dintre următoarele tehnologii este un exemplu de mediu de procesare paralelă și distribuită?
Care dintre următoarele tehnologii este un exemplu de mediu de procesare paralelă și distribuită?
Signup and view all the answers
Ce tip de arhitectură de procesor este specifică unui sistem SISD (Single Instruction Stream, Single Data Stream)?
Ce tip de arhitectură de procesor este specifică unui sistem SISD (Single Instruction Stream, Single Data Stream)?
Signup and view all the answers
În contextul memoriei partajate, ce înseamnă termenul 'CREW'?
În contextul memoriei partajate, ce înseamnă termenul 'CREW'?
Signup and view all the answers
Ce reprezintă acronimul MIMD în taxonomia lui Flynn?
Ce reprezintă acronimul MIMD în taxonomia lui Flynn?
Signup and view all the answers
Ce tip de memorie partajată permite ca o variabilă să fie citită într-un singur pas, dar necesită log(N) pași pentru a fi citită într-un alt context anume?
Ce tip de memorie partajată permite ca o variabilă să fie citită într-un singur pas, dar necesită log(N) pași pentru a fi citită într-un alt context anume?
Signup and view all the answers
Care dintre următoarele opțiuni descrie cel mai bine modul în care majoritatea aplicațiilor utilizează thread-uri în prezent?
Care dintre următoarele opțiuni descrie cel mai bine modul în care majoritatea aplicațiilor utilizează thread-uri în prezent?
Signup and view all the answers
Ce semnifică termenul 'multi-core' în contextul procesoarelor moderne?
Ce semnifică termenul 'multi-core' în contextul procesoarelor moderne?
Signup and view all the answers
Care dintre următoarele NU este o caracteristică comună a supercomputerelor?
Care dintre următoarele NU este o caracteristică comună a supercomputerelor?
Signup and view all the answers
Ce concept descrie executarea mai multor task-uri simultan?
Ce concept descrie executarea mai multor task-uri simultan?
Signup and view all the answers
Care este o caracteristică principală a multi-threading-ului?
Care este o caracteristică principală a multi-threading-ului?
Signup and view all the answers
Ce se întâmplă în cazul unei condiții de competiție?
Ce se întâmplă în cazul unei condiții de competiție?
Signup and view all the answers
Ce politică este utilizată pentru planificarea thread-urilor de către sistemul de operare?
Ce politică este utilizată pentru planificarea thread-urilor de către sistemul de operare?
Signup and view all the answers
Care dintre următoarele afirmații este adevărată despre hyperthreading?
Care dintre următoarele afirmații este adevărată despre hyperthreading?
Signup and view all the answers
Poate un sistem de operare să suporte multitasking pe mai multe core-uri?
Poate un sistem de operare să suporte multitasking pe mai multe core-uri?
Signup and view all the answers
Cum se comportă thread-urile în cadrul unei aplicații multi-threaded?
Cum se comportă thread-urile în cadrul unei aplicații multi-threaded?
Signup and view all the answers
Ce reprezintă o condiție de competiție în multi-threading?
Ce reprezintă o condiție de competiție în multi-threading?
Signup and view all the answers
Care este valoarea finală a lui a dacă cele două thread-uri rulează simultan și fiecare adaugă 2 la a?
Care este valoarea finală a lui a dacă cele două thread-uri rulează simultan și fiecare adaugă 2 la a?
Signup and view all the answers
Ce se va întâmpla cu variabila a dacă Thread 1 termină prima operațiune înainte de Thread 2?
Ce se va întâmpla cu variabila a dacă Thread 1 termină prima operațiune înainte de Thread 2?
Signup and view all the answers
Ce este un race condition în contextul thread-urilor?
Ce este un race condition în contextul thread-urilor?
Signup and view all the answers
Dacă cele două thread-uri utilizează aceleași regiuni de memorie, ce se poate întâmpla cu rezultatul final al lui a?
Dacă cele două thread-uri utilizează aceleași regiuni de memorie, ce se poate întâmpla cu rezultatul final al lui a?
Signup and view all the answers
Când ambele thread-uri încarcă aceeași valoare a lui a, ce se întâmplă cu registrele eax?
Când ambele thread-uri încarcă aceeași valoare a lui a, ce se întâmplă cu registrele eax?
Signup and view all the answers
Care este rezultatul executării thread-urilor asupra valorii a dacă unul dintre ele modifică a înainte de celălalt?
Care este rezultatul executării thread-urilor asupra valorii a dacă unul dintre ele modifică a înainte de celălalt?
Signup and view all the answers
Ce strategie poate fi utilizată pentru a evita un race condition?
Ce strategie poate fi utilizată pentru a evita un race condition?
Signup and view all the answers
Ce se poate deduce despre valorile eax în timpul execuției thread-urilor?
Ce se poate deduce despre valorile eax în timpul execuției thread-urilor?
Signup and view all the answers
Study Notes
Algoritmi Paraleli și Distribuiți - Introducere
- Motivul programării paralele și distribuite:
- Timpul de execuție mai scurt.
- Abordarea problemelor de dimensiuni mari
- Resurse accesibile aflate la distanţă.
- Reducerea costurilor.
- Toleranță la erori/defecte/probleme
- Ascunderea timpilor de așteptare
- Redundanţă
- Scalabilitatea
- Scaderea timpului de răspuns
- Securitate îmbunătățită.
- Informatii despre limitările programării secvențiale:
- Viteza de transmisie este limitată de viteza luminii.
- Miniaturizarea are o frontieră - tranzistor de dimensiunea unui atom. (A reda ceva la scară redusă)
- Costurile de cercetare și proiectare sunt enorme.
- Tehnologiile paralele și distribuite: Blockchain, Peer-to-Peer, Quad-Core.
- Alte tehnologii disponibile ca suport in curs: Eclipse, Visual Studio.
- Aplicatii distribuite: Dropbox, Spark, Boinc.
- Aproape toate aplicațiile folosesc mai multe thread-uri.
- Taxonomia Flynn clasifică arhitecturile de calcul în funcție de numărul de fluxuri de instrucțiuni și de date, având ca scop îmbunătățirea paralelismului și a procesării eficiente a informațiilor.
- Noțiuni de bază:
- SISD (Single Instruction Single Data) se referă la un model de arhitectură în care un singur procesor execută o singură instrucțiune pe un singur set de date.
- Arhitectura von Neumann se referă la un model de arhitectură de calcul care integrează stocarea programelor și a datelor într-un singur sistem, optimizând performanța și eficiența procesării.
- Calculatorul Clasic one-core
- SIMD (Single Instruction Multiple Data) permite într-o singură instrucțiune procesarea mai multor elemente de date simultan, fiind eficient în procesarea vectorială.
- Suportul SSE; procesoare GPU
- MISD (Multiple Instruction Single Data) implică aplicarea mai multor instrucțiuni la același set de date.
- Sisteme specializate
- MIMD (Multiple Instruction Multiple Data) face posibilă executarea simultană a diferitelor instrucțiuni pe diferite seturi de date, adaptându-se bine la sarcini variate și complexitate crescută.
- Procesoare actuale
- SISD (Single Instruction Single Data) se referă la un model de arhitectură în care un singur procesor execută o singură instrucțiune pe un singur set de date.
- Memoriile partajate sunt modalități prin care multiple procesore sau nuclee pot accesa aceeași zonă de memorie. În arhitectura Uniform Memory Access (UMA), fiecare procesor are același timp de acces la memorie, ceea ce oferă o realizare simetrică și eficientă a resurselor.
- Memorie distribuita: Pe de altă parte, arhitectura Non-Uniform Memory Access (NUMA) permite ca procesorii să aibă timpi de acces diferiți la memoriile asociate, în funcție de distanța față de sursa de date, ceea ce poate influența și optimiza performanța în funcție de topologia sistemului.
- Tipuri de paralelism:
- La nivel de bit - operatii logice
- La nivel de instructiune (ex. adunarea a doi vectori)
- La nivel de task:
- Multi-Tasking(pot comunica și procesele)
- Multi-Threading
- Threads vs cores
- Procesele reprezintă instanțe de program.
- Un proces poate avea mai multe fire de execuție (threads).
- Fir de execuție (thread) - Flux de control secvențial în cadrul unui proces
- Există mai multe modalități de execuție a thread-urilor: în paralel, de către sistemul de operare (time sharing), prioritate.
- Hyperthreading - tehnologie pentru utilizarea mai eficientă a resurselor hard.
- Primitive de sincronizare:
- variabile atomice,
- semafoare
- semafoare binare (mutexe)
- secțiuni critice
- bariere
- Excluderea mutuală, cunoscută și sub denumirea de mutex, este esențială pentru a preveni accesul simultan la resurse partajate.
- Algoritmul lui Dekker:
- Este unul dintre primele algoritmi care oferă o soluție la problema excluziunii mutuale.
- Funcționează doar cu două fire de execuție
- Nu există starvation (adică un proces nu va fi blocat la nesfârșit).
- Algoritmul lui Dijkstra este o extensie a ideilor lui Dekker și oferă o soluție similară, însă este mai complex și permite implementarea pentru un număr mai mare de procese.
- Algoritmul lui Peterson, pe de altă parte, este elegant și simplu, fiind destinat de asemenea pentru două procese, și se bazează pe utilizarea a două variabile pentru a controla accesul la secțiunile critice.
- Algoritmul lui Dekker:
Alte notiuni
- O situație de concurență în care rezultatul final al unui proces depinde de ordinea în care procesele concurente sunt executate. Aceasta poate duce la comportamente neprevăzute și erori, cum ar fi pierderea datelor sau rezultatele incorecte. Race condition apare adesea în sisteme de operare sau în programele multi-thread, unde mai multe fire de execuție accesează simultan resurse partajate fără o sincronizare adecvată. Prevenirea acestor condiții de cursă se poate realiza prin utilizarea de mecanisme de sincronizare, cum ar fi mutex-uri, semafoare sau blocaje. Evaluarea și designul sistemelor trebuie să includă măsuri pentru a evita apariția acestor probleme, asigurând astfel corectitudinea și stabilitatea aplicațiilor.
- Alte primitive de procesare: lock(), unlock()
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Acest curs oferă o introducere în algoritmii paraleli și distribuiți, explorând conceptele fundamentale și aplicațiile acestora. Profesorul Ciprian Dobre va ghida studenții printr-un program structurat, care include teme, laboratoare și evaluări. Este esențial să participați pentru a obține nota minimă necesară în semestrul universitar.