calcul paralel definiție
calculul paralel este un tip de arhitectură de calcul în care mai multe procesoare execută simultan mai multe calcule mai mici defalcate dintr-o problemă globală mai mare și complexă.
Întrebări frecvente
ce este calculul paralel?
calculul paralel se referă la procesul de descompunere a problemelor mai mari în părți mai mici, independente, adesea similare, care pot fi executate simultan de mai multe procesoare care comunică prin memorie partajată, ale căror rezultate sunt combinate la finalizare ca parte a unui algoritm general. Scopul principal al calculului paralel este creșterea puterii de calcul disponibile pentru procesarea mai rapidă a aplicațiilor și rezolvarea problemelor.infrastructura de calcul paralel este de obicei găzduită într-un singur centru de date unde mai multe procesoare sunt instalate într-un rack de server; cererile de calcul sunt distribuite în bucăți mici de către serverul de aplicații care sunt apoi executate simultan pe fiecare server.
există, în general, patru tipuri de calcul paralel, disponibile atât de la furnizorii de calcul paralel, cât și de la cei cu sursă deschisă-paralelism la nivel de biți , paralelism la nivel de instrucțiuni, paralelism DE SARCINI sau paralelism la nivel de cuvânt:
- paralelism la nivel de biți: crește dimensiunea cuvântului procesorului, ceea ce reduce cantitatea de instrucțiuni pe care procesorul trebuie să le execute pentru a efectua o operație pe variabile mai mari decât lungimea cuvântului.
- paralelism la nivel de instrucțiuni: abordarea hardware funcționează pe paralelism dinamic, în care procesorul decide în timpul rulării ce instrucțiuni să execute în paralel; abordarea software funcționează pe paralelism static, în care compilatorul decide ce instrucțiuni să execute în paralel
- paralelism DE SARCINI: o formă de paralelizare a codului computerului pe mai multe procesoare care rulează mai multe sarcini diferite în același timp pe aceleași date
- paralelism la nivel de Superword: o tehnică de vectorizare care poate exploata paralelismul codului inline
aplicațiile paralele sunt de obicei clasificate fie ca paralelism cu granulație fină, în care subtaskurile vor comunica de mai multe ori pe secundă; paralelism cu granulație grosieră, în care subtaskurile nu comunică de mai multe ori pe secundă; sau paralelism jenant, în care subtaskurile rareori sau niciodată să comunice. Maparea în calcul paralel este utilizată pentru a rezolva probleme jenante paralele prin aplicarea unei operații simple la toate elementele unei secvențe fără a necesita comunicarea între subactivități.popularizarea și evoluția calculului paralel în secolul 21 au venit ca răspuns la scalarea frecvenței procesorului care a lovit peretele de putere. Creșterea frecvenței crește cantitatea de putere utilizată într-un procesor, iar scalarea frecvenței procesorului nu mai este fezabilă după un anumit punct; prin urmare, programatorii și producătorii au început să proiecteze software de sistem paralel și să producă procesoare eficiente din punct de vedere energetic cu mai multe nuclee pentru a aborda problema consumului de energie și a supraîncălzirii unităților centrale de procesare.
importanța calculului paralel continuă să crească odată cu utilizarea crescândă a procesoarelor multicore și a GPU-urilor. GPU-urile lucrează împreună cu procesoarele pentru a crește debitul de date și numărul de calcule concurente într-o aplicație. Folosind puterea paralelismului, un GPU poate finaliza mai multă muncă decât un procesor într-o anumită perioadă de timp.
fundamentele arhitecturii computerizate paralele
arhitectura computerizată paralelă există într-o mare varietate de computere paralele, clasificate în funcție de nivelul la care hardware-ul acceptă paralelismul. Arhitectura paralelă a computerului și tehnicile de programare lucrează împreună pentru a utiliza în mod eficient aceste mașini. Clasele de arhitecturi de calculatoare paralele includ:
- multi-core computing: Un procesor multi-core este un circuit integrat al procesorului computerului cu două sau mai multe nuclee de procesare separate, fiecare executând instrucțiuni de program în paralel. Miezurile sunt integrate pe mai multe matrițe într-un singur pachet cip sau pe o singură matriță cu circuit integrat și pot implementa arhitecturi precum multithreading, superscalar, vector sau VLIW. Arhitecturile multi-core sunt clasificate fie omogene, care includ numai nuclee identice, fie eterogene, care includ nuclee care nu sunt identice.
- multiprocesare simetrică: multiprocesor hardware și Arhitectură software în care două sau mai multe procesoare independente, omogene sunt controlate de o singură instanță a sistemului de operare care tratează toate procesoarele în mod egal și este conectată la o singură memorie principală partajată, cu acces complet la toate resursele și dispozitivele comune. Fiecare procesor are o memorie cache privată, poate fi conectat folosind rețele mesh on-chip și poate funcționa pe orice sarcină, indiferent unde se află datele pentru acea sarcină în memorie.
- Calculatoare distribuite: Componentele sistemului distribuite sunt localizate pe diferite computere în rețea care își coordonează acțiunile comunicând prin HTTP pur, conectori asemănători RPC și cozi de mesaje. Caracteristicile semnificative ale sistemelor distribuite includ eșecul independent al componentelor și concurența componentelor. Programarea distribuită este de obicei clasificată ca arhitecturi client–server, trei niveluri, n-tier sau peer-to-peer. Există multe suprapuneri în calculul distribuit și paralel, iar termenii sunt uneori folosiți în mod interschimbabil.
- calcul paralel masiv: se referă la utilizarea a numeroase computere sau procesoare de calculator pentru a executa simultan un set de calcule în paralel. O abordare implică gruparea mai multor procesoare într-un cluster de calculatoare centralizat, bine structurat. O altă abordare este grid computing, în care multe computere distribuite pe scară largă lucrează împreună și comunică prin Internet pentru a rezolva o anumită problemă.
alte arhitecturi de calculatoare paralele includ computere paralele specializate, cluster computing, grid computing, procesoare vectoriale, circuite integrate specifice aplicației, calcul de uz general pe unități de procesare grafică (GPGPU) și calcul reconfigurabil cu matrice de poartă programabile în câmp. Memoria principală în orice structură paralelă a computerului este fie memorie distribuită, fie memorie partajată.
soluții și tehnici software de calcul paralel
limbaje de programare concurente, API-uri, biblioteci și modele de programare paralelă au fost dezvoltate pentru a facilita calculul paralel pe hardware paralel. Unele soluții și tehnici software de calcul paralel includ:
- Application checkpointing: o tehnică care oferă toleranță la erori pentru sistemele de calcul prin înregistrarea tuturor stărilor variabile curente ale aplicației, permițând aplicației să restaureze și să repornească din acel moment în cazul eșecului. Checkpointing este o tehnică crucială pentru sistemele de calcul extrem de paralele în care calculul de înaltă performanță este rulat pe un număr mare de procesoare.
- paralelizare automată: se referă la conversia codului secvențial în cod multi-threaded pentru a utiliza mai multe procesoare simultan într-o mașină multiprocesor cu memorie partajată (SMP). Tehnicile automate de paralelizare includ analiza, analiza, programarea și generarea de coduri. Exemple tipice de compilatoare și instrumente comune de paralelizare sunt compilatorul Paradigm, compilatorul Polaris, compilatorul Rice Fortran D, compilatorul SUIF și compilatorul Vienna Fortran.
- limbaje de programare paralele: limbajele de programare paralele sunt de obicei clasificate fie ca memorie distribuită, fie ca memorie partajată. În timp ce limbajele de programare cu memorie distribuită folosesc transmiterea mesajelor pentru a comunica, limbajele de programare cu memorie partajată comunică prin manipularea variabilelor de memorie partajată.
diferența dintre calculul paralel și Cloud Computing
Cloud computing este un termen general care se referă la furnizarea de servicii scalabile, cum ar fi baze de date, stocare de date, rețele, servere și software, pe Internet, după cum este necesar, pay-as-you-go.
serviciile de Cloud computing pot fi publice sau private, sunt gestionate integral de furnizor și facilitează accesul de la distanță la date, lucrări și aplicații de pe orice dispozitiv, în orice loc capabil să stabilească o conexiune la Internet. Cele mai frecvente trei categorii de servicii sunt Infrastructura ca serviciu (IaaS), platforma ca serviciu (PaaS) și Software ca serviciu (SaaS).
Cloud computing este o paradigmă relativ nouă în dezvoltarea de software care facilitează accesul mai larg la calculul paralel prin intermediul unor clustere vaste de computere virtuale, permițând utilizatorului mediu și organizațiilor mai mici să utilizeze puterea de procesare paralelă și opțiunile de stocare rezervate de obicei întreprinderilor mari.
diferența dintre procesarea paralelă și calculul paralel
procesarea paralelă este o metodă de calcul în care părți separate ale unei sarcini complexe generale sunt rupte și rulate simultan pe Mai multe procesoare, reducând astfel timpul de procesare.
împărțirea și atribuirea fiecărei sarcini unui procesor diferit este de obicei executată de informaticieni cu ajutorul instrumentelor software de procesare paralelă, care vor funcționa, de asemenea, pentru a reasambla și citi datele odată ce fiecare procesor și-a rezolvat ecuația particulară. Acest proces se realizează fie printr-o rețea de calculatoare, fie printr-un computer cu două sau mai multe procesoare.
procesarea paralelă și calculul paralel apar în tandem, prin urmare termenii sunt adesea folosiți interschimbabil; cu toate acestea, în cazul în care procesarea paralelă se referă la numărul de nuclee și procesoare care rulează în paralel în computer, calculul paralel se referă la modul în care software-ul se comportă pentru a optimiza pentru acea condiție.
diferența dintre calculul secvențial și cel paralel
calculul secvențial, cunoscut și sub numele de calcul serial, se referă la utilizarea unui singur procesor pentru a executa un program care este împărțit într-o secvență de instrucțiuni discrete, fiecare executată una după alta fără suprapunere La un moment dat. Software-ul a fost programat în mod tradițional secvențial, ceea ce oferă o abordare mai simplă, dar este semnificativ limitat de viteza procesorului și de capacitatea acestuia de a executa fiecare serie de instrucțiuni. În cazul în care mașinile uni-procesor utilizează structuri de date secvențiale, structurile de date pentru mediile de calcul paralele sunt concurente.
măsurarea performanței în programarea secvențială este mult mai puțin complexă și importantă decât valorile de referință în calculul paralel, deoarece de obicei implică doar identificarea blocajelor din sistem. Valorile de referință în calculul paralel pot fi obținute cu ajutorul cadrelor de evaluare comparativă și de testare a regresiei performanței, care utilizează o varietate de metodologii de măsurare, cum ar fi tratamentul statistic și repetițiile multiple. Capacitatea de a evita acest blocaj prin mutarea datelor prin ierarhia memoriei este evidentă în special în calculul paralel pentru știința datelor, învățarea automată calcul paralel, și calcul paralel inteligență artificială cazuri de utilizare.
calculul secvențial este efectiv opusul calculului paralel. În timp ce calculul paralel poate fi mai complex și poate avea un cost mai mare în față, avantajul de a putea rezolva o problemă mai repede depășește adesea costul achiziționării hardware-ului de calcul paralel.
OmniSci oferă o soluție de calcul paralel?
Platforma OmniSci valorifică puterea masivă de calcul paralelă a GPU-urilor pentru analiza datelor mari, oferind analiștilor de date mari și oamenilor de știință de date puterea de a interoga, vizualiza și alimenta interactiv fluxurile de lucru ale științei datelor peste miliarde de înregistrări în milisecunde. Platforma OmniSci este concepută pentru a depăși limitările de scalabilitate și performanță ale instrumentelor de analiză moștenite cu care se confruntă atributele de scară, viteză și locație ale seturilor de date mari de astăzi.