Informatika paralele

[300px|parapamje|djathtas|Blue Gene/P i [IBM, një supekompjuter për llogaritje masive paralele]]
**Paralelizmi** në informatikë  është formë e llogaritjes në të cilën shumë llogaritje bëhen në të njëjtën kohë , që veprojnë në parimin se problemet e mëdha shpesh mund të ndahen në më të vogla, të cilat pastaj zgjidhen njëkohësisht (*paralelisht*). Ka disa forma të ndryshme të paralelizmit në informatikë : niveli bit, niveli i instruksionit, paralelizmi i të dhënave dhe paralelizmi i kontrollit. Paralelizmi ka qenë i përdorur për shumë vite, kryesisht në informatikën e performancës së lartë, por interesi në të është rritur kohët e fundit për shkak se kufizimet fizike parandalojnë shkallën e frekuencave . Si pasojë e konsumit të energjisë (dhe për rrjedhojë gjenerimi i nxehtësisë) nga kompjuterët, është bërë një shqetësim në vitet e fundit , paralelizmi është bërë paradigmë dominuese në arkitekturën e kompjuterit, kryesisht në formën e procesorëve shumë bërthamorë.

Kompjuterët paralel mund të klasifikohen afërsisht sipas shkallës në të cilën hardueri mbështet paralelizmin, me kompjuterë që kanë më-shumë-procesorë me më-shumë-bërthama që kanë elemente të shumta të përpunimit brenda një makine të vetme, ndërsa kompjuterët grupore, masiive, dhe rrjetete përdorin shumë kompjuterë për të punuar të njëjtën punë. Arkitekturat kompjuterike paralele të specializuara ndonjëherë përdoren së bashku me procesorë të zakonshëm, për përshpejtimin e detyrave specifike.

Shpejtësia e një programi si rezultat i paralelizmit është jepet sipas Ligjit të Amdahl.

## Përmbledhje 
Zakonisht, programet kompjuterike janë shkruar për llogaritjen rendore (*serike*). Për të zgjidhur një problem, është ndërtuar dhe zbatuar një algoritëm si një rrjedhë serike e  instruksioneve. Këto  instruksione janë ekzekutuar në një njësi qendror të përpunimit në një kompjuter. Vetëm një instruksion mund të ekzekuthet në një kohë—pasi që instruksioni është i përfunduar, instruksioni tjetër ekzekutohet .

Paralelizmi, në anën tjetër, përdor elemente të shumta të përpunimit në të njëjtën kohë për të zgjidhur një problem. Kjo është arritur duke thyer problemin në pjesë të pavarura në mënyrë që çdo element i përpunuar të mund të ekzekutoj pjesën e saj të algoritmit në të njëjtën kohë me të tjerët. Elementet e përpunuara mund të jenë të ndryshëm dhe mund të përfshijnë burime të tilla si një kompjuter me shumë procesorë, disa kompjuterë rrjeti, pajisje të specializuara, ose ndonjë kombinim i burimeve të mësipërme .

Megjithatë, konsumi i energjisë nga një çip jepet nga ekuacioni  P = C &times; V2 &times; F, ku P eshte fuqia, C vëllimi që kalon në ciklin e kohës (në proporcion me numrin e transistorëve të cilëve u ndryshojn të dhënat), V, tensioni, dhe F është frekuenca e procesorit (cikle për sekondë) . Rritja në frekuencë rrit sasinë e energjisë të përdorur në një procesor. Rritja e konsumit të energjisë së procesorit çoi përfundimisht në anullimin e procesorit Tejas dhe Jayhawk të Intel-it në maj 2004, e cila është përmendur në përgjithësi si një fund i shkallës së frekuencës si paradigmë dominuese e arkitekturës kompjuterike .

Ligji i Moore është vëzhgimi empirik që tregon se dendësia e tranzitorit në një mikroprocesor dyfishohet çdo 18-24 muaj . Pavarësisht nga çështjet e konsumit të energjisë, si dhe parashikimet e të përsëritura në fund të saj, ligji i Moore është ende në fuqi. Me përfundimin e shkallës të frekuencave, këto transistorë shtesë (të cilat nuk janë më të përdorura për shkallën e frekuencës) mund të përdoret për të shtuar ekstra hardware për paralelizëm.

### Ligji i Amdahl dhe Ligji i Gustafson 
[right|thumbnail|400px|Paraqitja grafike e [Ligji i Amdahl|ligjit të Amdah. Shpejtësia e nje programi nga paralelizmi është e kufizuar nga sa prej atij programit mund të paralelizohet. Për shembull, në qoftë se 90% e programit mund të paralelizohet, shpejtësia maksimale teorike-duke përdorur paralelizmin do të bëhet 10x hetë më shpejt pa marrë parasysh sa shumë procesorë janë përdorur.]]

Në mënyrë optimale, rritja e shpejtësisë nga paralelizmi do të jetë lineare, dyfishon numrin e elementeve të përpunimit duke përgjysmuar kohën e ekzekutimit, dhe e dyfishon për herë të dytë përsëri, përgjysmon kohën e ekzekutimit. Megjithatë, shumë pak algoritme paralele arrijnë shpejtësin optimale. Shumica prej tyre kanë një rritje lineare të shpejtësisë për një numër të vogël të elementeve të përpunimit, të cilat sheshohen në një vlerë të vazhdueshme për një numër të madh të elementeve të përpunimit.

Potenciali i rritjes së shpejtësisë së një algoritmi në një platformë kompjuterike paralele është dhënë me ligjin e Amdahl, formuluar fillimisht nga Gene Amdahl në vitet 1960 . Ky ligj thekson se një pjesë e vogël e programit, i cili nuk mund të paralelizohet do ta kufizojnë shpejtësin e përgjithshme në dispozicion nga paralelizmi. Madhësitë matematikore ose problemet inxhinierike zakonisht përbëhen nga disa pjesë të paralelizuara dhe disa pjesë jo-paralelizuara (sekuenciale). Kjo marrëdhënie jepet nga ekuacioni:

:S = \frac{1}{1 - P}

ku *S* është shpejtësia e programit (si një faktor i ekzekutimit sekuencial), si dhe *P* është pjesë që është paralelizuar. Nëse pjesa e vijues e një programi është 10% e kohës së ekzekutimit, ne mund të marrim jo më shumë se 10&times; herë rritje të shpejtësisë, pa marrë parasysh sa procesorë janë shtuar. Kjo e vendos një kufizim lartë në dobi të më shumë pjesëve ë ekzekutuara njëkohësisht. Kur një detyrë nuk mund të ndahet për shkak të kufizimeve sekenciale, aplikimi i më shumë përpjekjeve nuk ka efekt në program. "Sjellja e fëmijës merr nëntë muaj, pa marrë parasysh sa shumë gra janë caktuar .

Ligji i Gustafson është një ligj tjetër në inxhinierin kompjuterike, i lidhur ngushtë me ligjin e Amdahl. Ai mund të formulohet si:

[thumb|400px|Supozojmë se një detyrë e ka dy pjesë të pavarura, A dhe B. B merr afërsisht 25% të kohës së llogaritjes e tërë. Me përpjekje, një [programues mund të jetë në gjendje për të bërë këtë pjesë pesë herë më shpejt, por kjo vetëm redukton kohën për llogaritjen e së gjithës nga pak. Kjo do të bëjë llogaritjen më shpejt se nga pjesët&nbsp;B të optimizuara, edhe pse B merrë një shpejtësi më të madhe (5&times; kundrejt 2&times;)]]

: S(P) = P - \alpha(P-1) \, 

ku *P* është numri i procesorëve, *S* është shpejtësia, dhe *α* - pjesët jo të paralelizuara të procesit . Ligji Amdahl e merr një madhësi të caktuar të problemit dhe kjo madhësi e seksionin sekuencial është e pavarur nga numri i procesorëve, ndërsa ligji i Gustafson nuk ka bërë këto supozime.

## Llojet e paralelizmit 
### Paralelizmi i nivelit-bit 
Nga ardhja e teknologjisë së prodhimit të mikroprocesorëve kompjuterik me shumë-shkallë të gjerë ë integrimit në vitet 1970 deri në vitet 1986, shpejtësi deri në arkitekturë kompjuterike u bë nga dyfishimi i madhësive të fjalëve në kompjuter-shumën e informacionit procesori mund ta manipulojë në cikël .

### Paralelizmi i nivelit të instruksionit 
[thumb|300px|Një pipeline me 5 faza në makinë [RISC (IF = Gjetja e Instruksionit, ID = Dekodimi i Instruksionit, EX = Ekzekutimi, MEM = Qasja në memorje, WB = Register write back)]]

Një program kompjuterik është, në thelb, një lumë instruksionesh të ekzekutuara nga një procesor. Këto instruksione mund të jenë të ri-drejtuara dhe të bashkohen në grupe të cilat janë ekzekutuar paralelisht pa ndryshuar rezultatin e programit. Kjo është e njohur si paralelizmi i nivelit të instruksionit. Përparimet në paralelizmin e nivelit të instruksionit dominuan arkitekturën kompjuterike nga mesi i viteve 1980 deri në mes të viteve 1990 .

### Paralelizmi i të dhënave 
Paralelizmi i të dhënave është paralelizmi i pandarë i unazës së programit, i cili fokusohet në shpërndarjen e të dhënave nëpër nyje informatikë të ndryshme që do të përpunohen në mënyrë paralele.

### Paralelizmi i punës 
Paralelizmi i punës është karakteristika e një programi paralel që "llogaritje krejtësisht të ndryshme mund të kryhen të dyja në grupin e të dhënave ose në grupe të ndryshme". Ky kontrast me të dhënat paralele, ku përllogaritja e njëjtë kryhet në grupe të njëjta ose të ndryshme të të dhënave. Paralelizmi i punës zakonisht nuk shkallëzon madhësinë e një problemi.

## Hardware 
### Memoria dhe komunikimi 
right|thumbnail|400px|Pamja logjike e arkitekturës së Qasjes Jo-Uniforme në Memori.
Memoria (*kujtesa*) kryesore në një kompjuter paralele është memorje e përbashkët (ndahet në mes të gjitha elementeve që përpunohen në një adresë të vetme), ose memorje e shpërndarë (në të cilën çdo element i përpunuar ka hapsirën e saj të adresës lokale ) . Memoria e shpërndarë i referohet faktit se memoria(*kujtesa*) është shpërndarë logjikisht, por shpesh nënkupton se ajo është shpërndarë edhe fizikisht. Shpërndarja e memorjes së përbashkët dhe Memoria virtuele kombinimi i dy qasjeve, ku elementi i përpunuar ka  memorien e saj lokale dhe qasjen në memorie mbi procesorin jo-lokale. Qasjet në memorien lokale janë zakonisht më të shpejt se qasjet në memorien e jo-lokale.

### Klasat e kompjuterëve paralele 
Kompjuterët paralel mund të klasifikohen sipas shkallës në të cilën mbështet paralelizmi harduerik ( *hardware parallelism*). Ky klasifikim është gjerësisht analog me distancën midis nyjeve informatike. Këto nuk janë reciprokisht ekskluzive, për shembull, grupe të multiprocessors simetrik janë relativisht të zakonshme.

#### Multicore në informatikë 
Një procesor multicore është një procesor që përfshin shumë njësi ekzekutimi ("berthama") në të njëjtën "*chip*".

#### Multiprocesimet simetrike 
Një multiprocessor simetrik është një sistem kompjuterik me procesorë të shumta të cilët e ndajnë memorien e njëjtë dhe të lidheni përmes një  linje "*bus*" .

## Burimi 
## Lidhjet e jashtme 
*  
* Laboratori Kombëtar i Lawrence Livermore: Hyrje në informatikën paralele 
* Projektimi dhe Ndërtimi i programeve paralele, nga Ian Foster 
* Arkiva e Informatikës paralele në Internet 
* Përpunimi paralel në fushën e IEEE Informatika e shpërndarjes Online 
* Parallel Computing Works Free On-line Book  
* Frontiers of Supercomputing Free On-line Book Covering topics like algorithms and industrial applications 
* Qendra e kërkimit universal të informatikës paralele 
* Kursi në Programim paralele në Columbia University (në bashkëpunim me projektin e IBM TJ Watson X10)