SUMMARY: |
Prefaţă. În timp ce multe probleme de mare interes practic cer tot mai multa putere de calcul, viteza componentelor calculatoarelor se apropie de limitele posibile. Este în general acceptat şi chiar dovedit faptul că aceste probleme ce necesită calcul intensiv nu vor putea fi rezolvate prin creşterea continuă a performanţelor calculatoarelor individuale, ci singura soluţie viabilă este folosirea calculului paralel.
Maşinile paralele, constând din mii de procesoare, oferă o putere de calcul foarte mare pentru aplicaţii complexe. Comunitatea potenţialilor utilizatori creşte foarte puternic şi datorită reţelelor globale, care aduc hard, soft şi expertize din surse dispersate geografic. Totuşi, calculul paralel nu a devenit deocamdată, o cale de rezolvare mai rapidă a problemelor, cu o foarte largă răspândire.
În acest moment programarea paralelă este proiectată, în general, pentru tipuri speciale de arhitecturi şi de aceea mutarea unui program de pe o arhitectură pe alta, necesită rescrierea lui aproape în întregime. Singura cale de a depăşi această problemă şi de a folosi paralelismul pe scară largă, este de a distruge această conexiune strânsa dintre soft şi hard.
Scopul principal al paralelismului este performanţa, dar aceasta este în acelaşi timp şi sursa principală a dificultăţilor legate de paralelism. Pentru a proiecta o soluţie paralelă eficientă, programatorul trebuie să descompună problema într-o colecţie de procese care se pot executa simultan, să mapeze procesele pe procesoarele disponibile, să sincronizeze procesele, să organizeze comunicaţiile etc. Pentru acestea s-au dezvoltat numeroase familii particulare de algoritmi, limbaje şi tehnici de implementare, pentru diferite tipuri de arhitecturi. [...]
|
|