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?
- Toate procesoarele accesează aceeași memorie partajată cu latență uniformă. (correct)
- Memoria este distribuită, iar accesul depinde de locația procesorului.
- Fiecare procesor are propria sa memorie privată.
- Procesoarele accesează memoria printr-o rețea complexă.
Ce tip de arhitectură de memorie este specific sistemelor NUMA?
Ce tip de arhitectură de memorie este specific sistemelor NUMA?
- Memoria locală a fiecărui procesor.
- Memoria accesată prin intermediul unui singur bus.
- Memoria distribuită cu acces neuniform. (correct)
- Memoria partajată cu acces uniform.
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?
- Tablou
- Stea (correct)
- Cub
- Arbore
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?
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?
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?
Care dintre următoarele afirmații despre variabilele atomice este adevărată ?
Care dintre următoarele afirmații despre variabilele atomice este adevărată ?
Care dintre următoarele poate fi considerat un mecanism de sincronizare ?
Care dintre următoarele poate fi considerat un mecanism de sincronizare ?
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?
Ce este o secțiune critică?
Ce este o secțiune critică?
Ce rol au semafoarele în sincronizarea proceselor ?
Ce rol au semafoarele în sincronizarea proceselor ?
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?
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) ?
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 ?
Ce este o variabilă atomică?
Ce este o variabilă atomică?
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?
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ă?
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)?
În contextul memoriei partajate, ce înseamnă termenul 'CREW'?
În contextul memoriei partajate, ce înseamnă termenul 'CREW'?
Ce reprezintă acronimul MIMD în taxonomia lui Flynn?
Ce reprezintă acronimul MIMD în taxonomia lui Flynn?
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?
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?
Ce semnifică termenul 'multi-core' în contextul procesoarelor moderne?
Ce semnifică termenul 'multi-core' în contextul procesoarelor moderne?
Care dintre următoarele NU este o caracteristică comună a supercomputerelor?
Care dintre următoarele NU este o caracteristică comună a supercomputerelor?
Ce concept descrie executarea mai multor task-uri simultan?
Ce concept descrie executarea mai multor task-uri simultan?
Care este o caracteristică principală a multi-threading-ului?
Care este o caracteristică principală a multi-threading-ului?
Ce se întâmplă în cazul unei condiții de competiție?
Ce se întâmplă în cazul unei condiții de competiție?
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?
Care dintre următoarele afirmații este adevărată despre hyperthreading?
Care dintre următoarele afirmații este adevărată despre hyperthreading?
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?
Cum se comportă thread-urile în cadrul unei aplicații multi-threaded?
Cum se comportă thread-urile în cadrul unei aplicații multi-threaded?
Ce reprezintă o condiție de competiție în multi-threading?
Ce reprezintă o condiție de competiție în multi-threading?
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?
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?
Ce este un race condition în contextul thread-urilor?
Ce este un race condition în contextul thread-urilor?
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?
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?
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?
Ce strategie poate fi utilizată pentru a evita un race condition?
Ce strategie poate fi utilizată pentru a evita un race condition?
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?
Flashcards
Acces la Memorie Uniform (UMA)
Acces la Memorie Uniform (UMA)
Un tip de memorie partajată în care toate procesoarele au acces egal și uniform la toate locațiile de memorie.
Acces la Memorie Non-Uniform (NUMA)
Acces la Memorie Non-Uniform (NUMA)
Un tip de memorie distribuită în care procesoarele nu au acces egal la toate locațiile de memorie. Unele locații pot fi accesate mai rapid decât altele.
Paralelism la nivel de instrucțiune
Paralelism la nivel de instrucțiune
Un tip de paralelism care operează pe nivel de instrucțiune, permițând ca instrucțiunile să fie executate simultan.
Paralelism la nivel de task
Paralelism la nivel de task
Signup and view all the flashcards
Multi-tasking
Multi-tasking
Signup and view all the flashcards
Programarea Paralelă
Programarea Paralelă
Signup and view all the flashcards
Programarea Distribuită
Programarea Distribuită
Signup and view all the flashcards
Timp de execuție mai scurt
Timp de execuție mai scurt
Signup and view all the flashcards
Abordarea problemelor de dimensiuni mari
Abordarea problemelor de dimensiuni mari
Signup and view all the flashcards
Accesul la resurse aflate la distanță
Accesul la resurse aflate la distanță
Signup and view all the flashcards
Reducerea costurilor
Reducerea costurilor
Signup and view all the flashcards
Toleranță la defecte
Toleranță la defecte
Signup and view all the flashcards
Scalabilitate
Scalabilitate
Signup and view all the flashcards
Condiție de cursă
Condiție de cursă
Signup and view all the flashcards
Conditiție de cursă
Conditiție de cursă
Signup and view all the flashcards
Conditiție de cursă
Conditiție de cursă
Signup and view all the flashcards
Exemple de condiții de cursă
Exemple de condiții de cursă
Signup and view all the flashcards
Rezultatul condiției de cursă
Rezultatul condiției de cursă
Signup and view all the flashcards
Prevenirea condițiilor de cursă
Prevenirea condițiilor de cursă
Signup and view all the flashcards
Mecanisme de sincronizare
Mecanisme de sincronizare
Signup and view all the flashcards
Sincronizare - soluția
Sincronizare - soluția
Signup and view all the flashcards
Legea lui Moore
Legea lui Moore
Signup and view all the flashcards
Care sunt limitările programării secvențiale?
Care sunt limitările programării secvențiale?
Signup and view all the flashcards
Ce este CMOS?
Ce este CMOS?
Signup and view all the flashcards
De ce sunt atât de importante cursurile de programare paralelă și distribuită?
De ce sunt atât de importante cursurile de programare paralelă și distribuită?
Signup and view all the flashcards
Ce este Taxonomia Flynn?
Ce este Taxonomia Flynn?
Signup and view all the flashcards
Ce este SISD?
Ce este SISD?
Signup and view all the flashcards
Ce este SIMD?
Ce este SIMD?
Signup and view all the flashcards
Ce este MISD?
Ce este MISD?
Signup and view all the flashcards
Ce este MIMD?
Ce este MIMD?
Signup and view all the flashcards
Ce este memoria partajată?
Ce este memoria partajată?
Signup and view all the flashcards
Ce este un thread?
Ce este un thread?
Signup and view all the flashcards
Ce este multi-threading?
Ce este multi-threading?
Signup and view all the flashcards
Ce este multi-tasking?
Ce este multi-tasking?
Signup and view all the flashcards
Ce este o "condiție de cursă"?
Ce este o "condiție de cursă"?
Signup and view all the flashcards
Ce este Hyperthreading?
Ce este Hyperthreading?
Signup and view all the flashcards
Cum împart thread-urile memoria?
Cum împart thread-urile memoria?
Signup and view all the flashcards
Poate funcționa multi-tasking pe mai multe procesoare?
Poate funcționa multi-tasking pe mai multe procesoare?
Signup and view all the flashcards
Se pot executa mai multe thread-uri pe un singur core?
Se pot executa mai multe thread-uri pe un singur core?
Signup and view all the flashcards
Variabilă atomică
Variabilă atomică
Signup and view all the flashcards
Mutex
Mutex
Signup and view all the flashcards
Secțiune critică
Secțiune critică
Signup and view all the flashcards
Barieră
Barieră
Signup and view all the flashcards
Semafor
Semafor
Signup and view all the flashcards
Semafor binar
Semafor binar
Signup and view all the flashcards
Atomicitate
Atomicitate
Signup and view all the flashcards
Operație atomică
Operație atomică
Signup and view all the flashcards
Vizibilitate
Vizibilitate
Signup and view all the flashcards
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.