Rezumat: În cadrul acestui curs următoarele subiecte vor fi abordate: definirea, scopul programării paralele; Calculul polinucleare; mai multe fluxuri de comenzi / date; accelerație; legea Amadal; Gustafson de drept BARSIS.
Definiție, programare paralelă scop
Există diferite moduri de a scrie programe care pot fi împărțite în trei grupe:
- Programarea secvențială cu paralelism în continuare automată.
- Formarea directă a controlului paralel fluxurilor care permite arhitecturi de calcul paralel sau sisteme de operare.
- Descrierea de paralelism fără sarcina de gestionare explicită oferă doar link-uri de informații. Este de așteptat ca programul va rula pe sisteme cu resurse infinite de calcul, operatorii vor începe imediat cu privire la disponibilitatea datelor brute.
Fiecare dintre aceste abordări are propriile avantaje și dezavantaje ale programării paralele.
Calcul paralel - un mod de organizare de calcul, în care programele sunt concepute ca un set de interacțiune proceselor de calcul care funcționează asincron și, în același timp.
Concurrent programare - o tehnică de programare, care profită de sistemele multi-core sau multi-procesor, și este un subset al conceptului mai larg de multithreading (multithreading).
procesarea multi-core
Utilizarea programării paralele devine mai necesară, deoarece permite utilizarea mai eficientă a procesoarelor multi-core si sisteme multi-procesor. Pentru o varietate de motive, inclusiv o creștere a consumului de energie și capacitatea de memorie limitată, crește viteza de ceas de procesoare moderne a devenit imposibilă. În schimb, producătorii de procesoare a început să crească productivitatea lor prin plasarea pe același cip mai multe nuclee, fără a modifica sau de a reduce frecvența de ceas. Prin urmare, pentru a crește viteza de aplicare ar trebui să fie acum pe abordarea -Noua la organizarea codului, și anume - pentru a optimiza programe pentru sistemele multicore.
fluxuri multiple de comandă / date (Clasificare M.Flinna)
Cea mai veche și mai bine cunoscut este clasificarea arhitecturii de calculator, propusă în 1966 M.Flinnom. Clasificarea se bazează pe conceptul de flux, care este definit ca o secvență de elemente, comenzi sau date procesate de procesor. Pe baza numărului de comenzi și fluxuri de fluxuri de date Flynn identifică patru clase de arhitecturi: SISD. MISD. SIMD. MIMD. Descrierea claselor este dată în tabel. 1.1.
Tabelul 1.1. Descriere clase de arhitecturi
SISD (un singur flux de instrucțiuni / flux de date unică) sau OKOD (singur flux de instrucțiuni, fluxul de date unică)
Și un singur flux de instrucțiuni flux unic de date (un singur procesor de execuție un singur flux de instrucțiuni, de prelucrare a datelor stocate într-o singură memorie). Această clasă include mașinile de serie clasice, sau altfel, tipul de mașină von Neumann (PDP-11 și VAX 11/780).
SIMD (un singur flux de instrucțiuni / flux de date multiple) sau SIMD (flux de instrucțiuni unic, fluxul de date multiple)
flux de instrucțiuni unic și fluxul de date multiple. În acest tip de arhitectură este păstrată singură instrucțiune, inclusiv, în contrast cu clasa anterioară (SISD), instrucțiunile vectoriale care vă permite să efectuați o operație aritmetică simultan pe mai multe date - elemente vectoriale.
MISD (flux de instrucțiuni multiple / flux de date unică) sau MKOD (fluxuri de instrucțiuni multiple, flux de date unică)
flux de instrucțiuni multiple și un singur flux de date. Definiție implică prezența în arhitectura de multe procesoare care se ocupă de același flux de date.
MIMD (flux de instrucțiuni multiple / flux de date multiple) sau MKMD (fluxuri multiple de instrucțiuni, fluxul de date multiple)
flux de instrucțiuni multiple și fluxul de date multiple. Această clasă presupune că sistemul informatic are mai multe unități de procesare de instrucțiuni, combinate într-un singur set și care rulează fiecare cu propriul flux de comenzi și date.
Pe baza tabelului. 1.1 se pot clasifica arhitectura într-un singur fir / multi-threading (Tab. 1.2).