Càrculu spartutu

Ntâ nfurmàtica, u càrculu spartutu è na manera di elabburari i dati â parallela, zuè unni si sparti nu prugramma nta cchiôssai struzzioni o prucessi ca dui o cchiôssai unità di càrculu firrìjanu tutti nzèmmula e nta na vota. Serbi a risòrbiri prubblemi diffìcili â mprescia.
Nascìu pi supirari i lìmmita fìsici dî prucissura ôn core sulu. A diffirenza dû càrculu â ringa tradizziunali, unni i cunti si fannu unu appressu a n'autru, cca cchiôssai unità di càrculu travàgghianu nzèmmula. Chisti ponnu èssiri i core d'un chip sulu o i gruppa di nu cluster, pi diri.
Storia
[cancia | cancia lu còdici]U bisognu di supirari u càrculu â ringa cumparìu già â fini di l'anni 50, quannu i lìmmita di l'architittura di von Neumann, speci u passaggiu dî dati ntra a CPU e a mimoria, accuminciaru a ridùciri quantu rinnìanu i primi carculatura. Nta stu cuntestu, tannu, nascìu u mudeḍḍu PRAM (Parallel Random Access Machine), un mudeḍḍu tiòricu ca primmittiva di capiri comu cchiôssai prucissura putèvanu travagghiari nzèmmula senza ca unu trasìa ntê minutagghi tècnici dâ màchina.
Nta l'anni 70, u parallalìsimu attruvò a so prima appricazzioni pràttica chî supercomputer vitturiali. U Cray-1, nisciutu ntô 1976, è u scempru cchiù canusciutu: ô postu di manijari n'upirazzioni sula â vota, putìa appricari a stissa upirazzioni ncapu a assai dati ntô stissu tempu. Nta l'anni 80, certi supercomputer, comu chiḍḍu dû Caltech custrujutu cu 64 prucissura Intel 8086/8087[1], fìciru vìdiri ca si putìanu aviri pristazzioni auti mittennu nzèmmula assai cumpunenti cummirciali standard, mmeci di custruiri màchini custusi fatti a posta.
Nzin'ô principiu di l'anni 2000, i carculatura si facìanu cchiù lesti acchianannu a friquenza di clock dî prucissura. Ma pirò ntô 2004, a nnustria dî semicunnuttura arrivò ôn lìmmitu: l'enirgìa dissipata comu caluri acchianava di manera spuninziali câ friquenza, e adunca nun era pussìbbili cchiù arrifriddari bonu i chip. Pi sicutari a fari crìsciri a putenza di càrculu senza squagghiari i circuiti, i pruduttura principiaru a ncucchiari cchiôssai unità nnipinnenti, i core, dintra ôn chip sulu. A pàrtiri di ḍḍu mumentu, u càrculu spartutu addivintò a norma macari ntâ nfurmàtica di cunzumu.
A pàrtiri dû 2011, u parallalìsimu si spargìu unn'è-è: dî dispusitivi mòbbili (cu l'arrivu dî primi smartphone dual-core e quad-core) ê sistemi cloud. Na parti chiavi l'àppiru i GPU (Graphics Processing Units). Mmintati pû rendering gràficu, st'unità tèninu migghiara di core sìmprici ca travàgghianu â parallela. Grazzi a chiattafurmi comu NVIDIA CUDA, oji i GPU s'ùsanu videmma pi scopi ginirali, speci ntê simulazzioni scintìfichi e p'ammajistrari i mudeḍḍi di ntilliggenza artificiali, unni a vilucità d'esecuzzioni addipenni quasi sana dâ capacità di manijari miliardi d'upirazzioni chî matrici ntô stissu tempu.
Liggi di scalabbilità
[cancia | cancia lu còdici]L'avànzitu di listizza ca si po aviri facennu caminari nu prugramma â parallela nun è senza lìmmiti. St'avànzitu mpincia nta ḍḍa parti dû prugramma ca s'hâ spèddiri pi forza 'n seri. Stu fattu u schìcanu chiaru chiaru du' liggi matimàtichi.
Liggi di Amdahl
[cancia | cancia lu còdici]A liggi di Amdahl fa u cuntu di quantu assai unu po jiri lestu, 'n tiurìa, cu nu prubblema di grannizza fissa. Siḍḍu è ḍḍu tantu pi centu dû còdici ca po caminari 'n parallelu e è ḍḍa parti ca mmeci s'hâ arrisòrbiri 'n filera, l'avànzitu cu prucissura è
Quannu crisci ô nfinitu, l'avànzitu agghica ôn tettu màssimu di . Pi diri, siḍḍu u 5% di nu prugramma s'hâ fari 'n seri, allura , ca voli diri c'u còdici nun po caminari cchiù lestu di 20 voti, mancu adupirannu millanta prucissura.
Liggi di Gustafson
[cancia | cancia lu còdici]A liggi di Gustafson talìa i cosi di n'autru latu. Quannu unu cci àvi cchiôssai prucissura pî manu, ô sòlitu si pìgghianu prubblemi cchiù granni, mmeci d'arrisòrbiri u stissu prubblema cchiù di prescia. Siḍḍu a parti di travagghiu â parallela crisci di paru ô nùmmaru di prucissura, l'avànzitu addiventa
Lìmmiti
[cancia | cancia lu còdici]Cci sunnu lìmmiti fìsici grossi. Quannu si mèttinu nzèmmula migghiara o dicini di migghiara di prucissura, u cunzumu di currenti elèttrica crisci a sfunneriu, juncennu megawatt di putenza. Stu fattu addumanna spisazzuna pi sustintari a màchina e, supratuttu, p'arrifriddalla, scanzannu chî cumpunenti si squàgghianu pû troppu caudu.
Liveḍḍi dû parallillìsimu
[cancia | cancia lu còdici]Cci sunnu furma diversi di càrculu spartutu, a sicunna dâ scala:
Parallillìsimu a liveḍḍu dî bit
[cancia | cancia lu còdici]Allungannu a palora (pi diri, passannu di 32 bit a 64 bit), u prucissuri manija nùmmara cchiù granni nta n'upirazzioni sula, arriducennu u nùmmaru di struzzioni ca cci vonnu.
Parallillìsimu a liveḍḍu dî struzzioni
[cancia | cancia lu còdici]U prucissuri talìa ntâ siquenza dî struzzioni, attrova chiḍḍi c'un addipènninu una cu n'autra e i sceddi 'n parallelu, oppuru ci cancia u versu pi tèniri accupati tutti i so unità di dintra.
Parallillìsimu a liveḍḍu dî dati
[cancia | cancia lu còdici]A stissa upirazzioni veni fatta firrijari 'n parallelu supra a parti diversi dî dati. Sta tècnica è usata assai ntê GPU pi cosi comu u rendering 3D o u machine learning.
Parallillìsimu a liveḍḍu dî còmpiti
[cancia | cancia lu còdici]Còmpiti o thread diversi vennu fatti 'n parallelu, supra ê stissi dati oppuru supra a dati diversi.
Tassunumìa di Flynn
[cancia | cancia lu còdici]Michael J. Flynn prupunìu na manera sìmprici pi classificari i computer e i prugrammi sicunnu comu manìjanu struzzioni e dati:
- SISD (Single Instruction, Single Data): U casu clàssicu di l'elaburazzioni a ringu. Un flussu sulu di struzzioni travagghia supra a nu flussu sulu di dati.
- SIMD (Single Instruction, Multiple Data): Na struzzioni sula veni applicata 'n parallelu ncapu a assai dati. S'usa assai ntâ matimàtica vitturiali e ntâ gràfica.
- MISD (Multiple Instruction, Single Data): Raru di vìdiri ntâ pràttica. Cchiôssai struzzioni diversi travàgghianu supr'ô stissu datu.
- MIMD (Multiple Instruction, Multiple Data): L'architittura â para cchiù cumuni d'oji. Cchiôssai prucissura fannu struzzioni diversi supra a dati diversi.
Oji assai sistemi cci ànnu architittura mmiscati: na CPU clàssica (MIMD) cumanna acciliratura o schedi gràfichi (SIMD) pi fari i cunti cchiù pisanti.
Maniju dâ mimoria
[cancia | cancia lu còdici]I computer paralleli ànn'a riggistrari e spàrtiri i dati. Comu u fannu dicidi a so architittura.
Ntâ mimoria spartuta, tutti i prucissura ponnu lèggiri e scrìviri ntô stissu spazziu di mimoria. È u casu tìpicu dî PC e dî smartphone. È cchiù fàcili di prugrammari, ma scala malu, picchì i prucissura finìsciunu a fari sciarra p'aviri a priurità nta l'accessu â mimoria. Sparti, quannu si jùncinu assai core, cc'è u prubblema di tèniri accurdati i dati ntê mimori di ogni prucissuri (cuirenza dâ cache).
Ntâ mimoria distribbujuta, â riversa, ogni prucissuri cci àvi a so mimoria privata. Si serbi nu datu ca sta a n'autra banna, s'àv'a mannari un missàggiu pi menzu dâ riti. Stu sistema scala bonu e si usa ntê cluster granni e ntô cloud. Cca u coḍḍu di vuttigghia nun è a mimoria, ma a latenza dâ riti, zuè u tempu c'abbisogna pî missaggi pi viaggiari di nu gruppu a n'autru.
I supercomputer di oji ammìscanu i du' maneri: sunnu cluster di màchini attaccati una cu n'autra, ma ogni màchina cci àvi cchiôssai core ca spàrtinu a mimoria lucali.
Standard di prugrammazzioni
[cancia | cancia lu còdici]Scrìviri software paralleli nun è fàcili pi nenti. S'àv'a capiri bonu comu spàrtiri u travagghju e comu scanzari ca i thread si mpidùgghianu ntra d'iḍḍi. Si du' thread pròvanu a canciari i stissi dati ntô stissu mumentu, finisci a schifiju (race condition).
Pi scanzalla s'ùsanu i lock, zoè miccanìsimi ca mbrùccanu a trasuta a l'autri thread. U prubblema è ca, si s'esàggira chî lock, i thread ponnu arristari mbruccati pi sempri (deadlock).
Pi fari i cosi cchiù fàcili, si nnùpranu stigghi e mudeḍḍi standard:
- OpenMP e POSIX Threads (Pthreads): S'ùsanu ntê sistemi a mimoria spartuta. Si mèttinu direttivi ntô còdici pi dìrici ô cumpilaturi quali parti (comu cicli o task) s'ànn'a fari â parallela ntê thread lucali.
- Message Passing Interface (MPI): U standard principali pâ mimoria distribbujuta. Duna règuli e funzioni pi mannari e arricìviri dati ntra màchini diversi attaccati ntâ riti.
Mudeḍḍi di disignu
[cancia | cancia lu còdici]Prubblemi diversi vonnu strutturi diversi pi funziunari bonu:
Sdicumpusizzioni giumètrica
[cancia | cancia lu còdici]U spazziu dû prubblema (p'esempiu, na mappa o na grigghia) si sparti a pezzi. Ogni prucissuri travagghia ncapu a na purzioni e scancia sulu i nfurmazzioni ê finaiti chî vicini. S'usa assai nta cosi comu i mudeḍḍi pû tempu o a fluidudinàmica.
Pipeline
[cancia | cancia lu còdici]I dati pàssanu pi menzu di na ringata di fasi, n'anticchia comu nta na catina di muntaggiu. Ogni prucissuri guverna na fasi. È bonu quannu cc'è nu flussu cuntìnuu di dati ncapu ê quali s'ànn'a fari sempri i stissi passaggi.
Mudeḍḍu a attura
[cancia | cancia lu còdici]Mmeci di spàrtiri a mimoria, u prugramma è fattu di attura nnipinnenti. Ogni atturi cci àvi u so statu e parra cu l'autri sulu pi menzu di missaggi. St'approcciu scala veru bonu e ci veni megghiu pî situazzioni caòtichi e mprividìbbili, comu simulari u tràficu ncapu a migghiara di ncruci, a paraggiu di struttura cchiù stanti comu ngradigghiati o pipeline.
Càrculu spartutu, distribbujutu e cuncurrenti
[cancia | cancia lu còdici]L'aggittivu spartutu s'usa sparti pi signalijari na virsioni cchiù spicializzata di càrculu spartutu unni cc'è sulu na mimoria ntra tutti i prucissura. Sta spicìfica serbi pi nun cunfùnniri u càrculu spartutu strictu sensu cu chiḍḍu distribbujutu[2], unni si fannu tanti cunti 'n parallelu cu dui o cchiù assai prucissura e cu dui o cchiù assai mimori, e chiḍḍu cuncurrenti[3], unni si manìjanu cchiôssai còmpiti diversi cu nu prucissuri sulu.
Bibbliugrafìa
[cancia | cancia lu còdici]- Almerico Murli, Lezioni di calcolo parallelo, Liguori, 2006.
- Temitayo Adefemi, What Every Computer Scientist Needs To Know About Parallelization, 2025.
Noti
[cancia | cancia lu còdici]- ↑ intel.com, https://www.intel.com/pressroom/kits/upcrc/ParallelComputing_backgrounder.pdf.
- ↑ britannica.com, https://www.britannica.com/technology/distributed-computing.
- ↑ britannica.com, https://www.britannica.com/technology/concurrent-programming.
Lijami di fora
[cancia | cancia lu còdici]- ibm.com, https://www.ibm.com/think/topics/parallel-computing.
- hpc.llnl.gov, https://hpc.llnl.gov/documentation/tutorials/introduction-parallel-computing-tutorial.
- arxiv.org, https://arxiv.org/html/2504.03647v1.
- sciencedirect.com, https://www.sciencedirect.com/topics/computer-science/parallel-computing.
- tech-sparks.com, https://www.tech-sparks.com/what-is-parallel-computing/.
- treccani.it, https://www.treccani.it/enciclopedia/computer-calcolo-parallelo_(Enciclopedia-della-Scienza-e-della-Tecnica)/.
- treccani.it, https://www.treccani.it/enciclopedia/calcolatori-paralleli/.