Calcul paralel

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , calculul paralel este executarea simultană a codului sursă al unuia sau mai multor programe (împărțit și adaptat în mod specific) pe mai multe microprocesoare sau nuclee multiple ale aceluiași procesor pentru a crește performanța de calcul a sistemului de procesare .

Descriere

Sisteme paralele

Uneori, termenul de procesor paralel este folosit pentru a indica calculatoare cu mai multe procesoare care pot fi utilizate pentru calcul paralel. Calculatoarele cu mii de microprocesoare sunt numite masiv paralele . Există multe tipuri de calculatoare paralele (sau procesoare paralele), care se disting prin tipul de conexiune dintre diferitele procesoare (numite „PE”, elemente de procesare ) și între acestea și memorie. Taxonomia Flynn catalogează și computerele în paralel și serial, în cazul în care procesoarele execută aceeași instrucțiune în același timp ( SIMD , instrucțiune unică-date multiple ) sau instrucțiuni diferite ( MIMD , instrucțiuni multiple-date multiple ). Sistemele paralele sunt, de asemenea, clasificate ca simetrice sau asimetrice în funcție de abilitățile deținute sau de sarcinile atribuite CPU-urilor (capacitatea de a rula tot sau parțial codul sistemului de operare; acces la memorie, dispozitive I / O etc.).

Deși un sistem cu n număr de procesoare este mai puțin eficient decât un sistem cu un singur procesor care este de n ori mai rapid, un sistem paralel este adesea mai ieftin. Pentru aplicații cu cantități mari de calcul, și mai ales pentru cele care sunt divizibile în n fire distincte, calculul paralel este o soluție excelentă. De fapt, cele mai recente supercomputere se bazează pe o arhitectură paralelă.

Algoritmi

Nu ar trebui să se presupună că o calcul paralelă eficientă poate fi realizată pur și simplu prin plasarea mai multor procesoare una lângă alta și conectarea acestora la o viteză suficientă. În practică, este foarte dificil să se obțină o accelerare liniară, adică performanță direct proporțională cu numărul de procesoare prezente în sistem: acest lucru se datorează faptului că mulți algoritmi sunt secvențiali ( legea lui Amdahl afirmă acest lucru într-un mod mai formal). Până la un punct, unele calcule pot fi efectuate în mod avantajos prin utilizarea pârghiilor software pe măsură ce se adaugă mai multe procesoare. Această metodă împarte munca ca într-o linie de asamblare: dacă calculul poate fi împărțit în n etape diferite și semnificative, n procesoare pot fi utilizate eficient. Cu toate acestea, dacă o etapă este mai lentă decât celelalte, aceasta va încetini întregul sistem.

Majoritatea algoritmilor trebuie rescriși pentru a profita de hardware-ul paralel. Un program care este rulat corect de un singur CPU ar putea prezenta probleme dacă este rulat în paralel: mai multe copii ale acestuia ar putea interfera unul cu celălalt, de exemplu prin accesarea aceleiași adrese de memorie în același timp. De aici și necesitatea unei programări atente pentru a exploata acest tip de sisteme.

„SpeedUp Superlinear“: problema unei mașini cu număr de n procesoare performante mai mult de n ori mai bine decât o mașină cu un singur procesor de viteză similară a fost controversată uneori (și a condus doar la alte referință teste), dar poate fi obținut de la o mașină nu numai de n ori mai puternic, dar și cu mai multă memorie cache și sistem, aplatizând ierarhia cache-memorie-disc, cu o gestionare mai bună a memoriei de către fiecare procesor și cu alte trucuri. Cu toate acestea, calitatea performanței depinde mai ales de sarcina de îndeplinit și de posibilitatea de a o împărți între unitățile de calcul.

Criptare

Calculul paralel, precum și în diverse ramuri ale matematicii ( teoria numerelor ), fizica ( QCD pe rețea , dinamica fluidelor de calcul ) și știința în general, este utilizat pe scară largă în criptanaliză , adică analiza textelor criptate folosind metoda forței brute . O concepție greșită foarte frecventă, chiar și în rândul inginerilor de sisteme, este că un computer paralel are o performanță echivalentă cu un computer serial cu costuri egale. În realitate, un computer cu 2 32 de circuite AES ar putea fi de miliarde de ori mai rapid decât un computer serial cu același cost. În practică, schimbul de memorie de timp este mult mai puțin convenabil decât schimbul de procesare de timp .

Conexiuni între fire

Calculatoarele paralele sunt structurate teoretic ca PRAM ( Parallel random access machine ). Acest model ignoră problemele care decurg din conexiunile dintre unități, dar este foarte util pentru a obține performanțe mai mari în multe cazuri de calcul paralel. În realitate, conexiunea dintre unități joacă un rol foarte semnificativ.

Procesorii pot comunica între ei pentru a rezolva o problemă într-o manieră coordonată sau pot funcționa complet independent, uneori sub controlul unui procesor care le furnizează date și obține rezultatele. Modurile de comunicare pot fi: o memorie partajată, un element care acționează ca o „centrală”, o magistrală partajată sau o rețea de diferite tipuri și tehnologii. Sistemele bazate pe rețele interconectate au nevoie de un router pentru a comunica cu elemente care nu sunt conectate direct; uneori există o ierarhie între unitățile de calcul. Memoria poate fi individuală procesorului, partajată local sau global.

Software paralel

O mulțime de software a fost dezvoltat pentru a programa calculatoare paralele, atât în sistemul de operare, cât și la nivelul limbajului de programare . Aceste sisteme trebuie să conțină mecanismele necesare pentru a împărți calculul între unități. Acestea pot susține paralelismul implicit (sistemul împarte problema și o furnizează automat procesorilor) sau explicit (programatorul trebuie să introducă indexuri pentru a-și împărți codul). Majoritatea software-ului actual permite un paralelism „monolivel”, în timp ce paralelismul „pe mai multe niveluri” (sau chiar „imbricat”) permite subdivizarea în continuare a unui cod deja executat în paralel. Este comun să se utilizeze variabile pentru a permite calculul paralel, evitând conflictele între unități. Echilibrarea volumului de muncă încearcă să țină toți procesorii ocupați prin mutarea proceselor de așteptare de la un procesor ocupat la unul liber.

Limbi

API și biblioteci

Bibliografie

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității Tezaur BNCF 60459 · LCCN (EN) sh85097826 · BNF (FR) cb11982441p (data)
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT