Calcul paralel

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 5 octombrie 2014; verificările necesită 12 modificări .

Calculul paralel  este o modalitate de organizare a calculului computerizat , în care programele sunt dezvoltate ca un set de procese de calcul care interacționează care funcționează în paralel (simultan). Termenul cuprinde toate problemele de paralelism în programare , precum și crearea de implementări hardware eficiente . Teoria calculului paralel este o secțiune a teoriei aplicate a algoritmilor [1] .

Există diferite moduri de a implementa calculul paralel. De exemplu, fiecare proces de calcul poate fi implementat ca un proces de sistem de operare sau procesele de calcul pot fi un set de fire de execuție într-un singur proces OS. Programele paralele pot fi executate fizic fie secvenţial pe un singur procesor  - alternând pe rând etapele de execuţie a fiecărui proces de calcul, fie în paralel - alocarea unuia sau mai multor procesoare (situate în apropiere sau distribuite într-o reţea de calculatoare ) fiecărui proces de calcul.

Principala dificultate în proiectarea programelor paralele este de a asigura succesiunea corectă a interacțiunilor între diferite procese de calcul, precum și coordonarea resurselor partajate între procese.

Modalități de sincronizare a comunicațiilor paralele

În unele sisteme de programare simultană, trecerea datelor între componente este ascunsă de programator (de exemplu, prin utilizarea mecanismului promisiunii ), în timp ce în altele trebuie specificată în mod explicit. Interacțiunile explicite pot fi împărțite în două tipuri:

Sistemele paralele bazate pe mesagerie sunt adesea mai ușor de înțeles decât sistemele cu memorie partajată și sunt în general privite ca o metodă superioară de programare paralelă. Există o mare varietate de teorii matematice pentru studiul și analiza sistemelor de transmitere a mesajelor, inclusiv modelul actorului și diferitele tipuri de calcul al procesului . Mesageria poate fi implementată eficient pe multiprocesoare simetrice atât cu memorie coerentă partajată, cât și fără aceasta.

Paralelismul de memorie distribuită și paralelismul de transmitere a mesajelor au caracteristici de performanță diferite. De obicei (dar nu întotdeauna), supraîncărcarea memoriei procesului și timpul de comutare a sarcinilor sunt mai mici pentru sistemele cu transmitere de mesaje, dar transmiterea mesajului în sine este mai mare decât apelurile de procedură. Aceste diferențe sunt adesea depășite de alți factori care afectează performanța.

Desigur, într-un astfel de sistem, este posibil să se utilizeze exclusiv metoda de transmitere a mesajelor, adică să ruleze un proces separat pe fiecare procesor al fiecărui nod. În acest caz, numărul de procese (și fire) va fi egal cu numărul de procesoare de pe toate nodurile. Această metodă este mai simplă (într-un program paralel, trebuie doar să creșteți numărul de procese), dar este mai puțin eficientă, deoarece procesoarele aceluiași nod vor schimba mesaje între ele ca și cum ar fi pe mașini diferite [5] .

Sarcini tipice care permit calculul paralel

Instrumente software de concurență

Vezi și

Note

  1. Mihailevici, 1989 , p. unu.
  2. RedBook, 1999 , p. unu.
  3. RedBook, 1999 , p. 2.
  4. RedBook, 1999 , p. 5.
  5. RedBook, 1999 , p. patru.

Literatură

Link -uri