L’elaborazione parallela è un tipo di elaborazione del computer in cui le attività di elaborazione di grandi dimensioni vengono suddivise in attività secondarie più piccole che vengono quindi elaborate contemporaneamente o in parallelo, anziché in sequenza. Questa tecnologia è ampiamente utilizzata nell’informatica moderna, soprattutto per problemi avanzati come quelli trattati nelle scienze naturali. Esempi di tecnologia di elaborazione parallela all’interno di un singolo dispositivo includono il multiprocessing simmetrico e l’elaborazione multicore. Più computer possono anche essere collegati tra loro per lavorare in parallelo attraverso metodi come calcolo distribuito, cluster di computer e computer in parallelo massivo.
Un multiprocessore simmetrico è un computer con un’unica memoria principale comune e un’istanza del sistema operativo collegata a più processori identici. I processori hanno le stesse capacità e sono collegati a una memoria comune, quindi le attività possono essere facilmente assegnate o riassegnate secondo necessità per bilanciare il carico di lavoro tra di loro. Nell’elaborazione multicore, ogni processore contiene almeno due unità di elaborazione centrale (CPU), chiamate core, responsabili della lettura e dell’esecuzione delle istruzioni. In sostanza, un processore multicore è in realtà più processori in un singolo componente integrato. Ciò consente una comunicazione più rapida ed efficiente tra i core di elaborazione, rispetto ai computer multiprocessore in cui ogni CPU è un componente separato.
I computer multiprocessore sono ampiamente utilizzati nelle applicazioni scientifiche e aziendali. È meno comune nei sistemi di personal computer, che di solito sono design monoprocessore, sebbene i multiprocessori siano diventati più comuni nel mercato consumer. Il software per computer deve essere progettato specificamente per i computer multiprocessore per sfruttare appieno i vantaggi che può fornire e questo tipo di software ha spesso problemi di prestazioni su un computer a processore singolo come risultato. Allo stesso modo, i programmi scritti con un singolo processore in mente di solito ottengono solo benefici limitati dal multiprocessing perché non sono progettati per trarne vantaggio.
La tecnologia di elaborazione parallela distribuita utilizza più computer, altrimenti indipendenti, che lavorano in parallelo su parti diverse di un problema, collegati tra loro tramite Internet o una rete interna in modo che possano comunicare tra loro. Questo tipo di tecnologia di elaborazione parallela può essere utilizzata con computer fisicamente distanti l’uno dall’altro, anche se non è necessariamente sempre così. Insieme, i computer collegati formano quella che viene chiamata una griglia computazionale.
Le griglie computazionali possono essere molto grandi e potenzialmente incorporare migliaia di computer che potrebbero essere sparsi in tutto il mondo. Questi computer potrebbero anche lavorare su problemi non correlati allo stesso tempo, con compiti che vengono elaborati dalla griglia distribuita tra i computer in base a quanta capacità di elaborazione libera ciascuno ha in quel momento. Il grid computing differisce dalla maggior parte degli altri moderni sistemi di elaborazione parallela perché una singola griglia spesso include una vasta gamma di computer con capacità diverse, piuttosto che un gruppo di unità identiche.
I cluster di computer sono una forma di tecnologia di elaborazione parallela in cui più computer collegati, in genere con capacità identiche, lavorano a stretto contatto come una singola unità. A differenza del multiprocessing simmetrico, che utilizza più processori che condividono una memoria e un sistema operativo comuni, ogni singola unità in un cluster è un computer autonomo completo. Questi di solito si trovano nella stessa posizione geografica e sono collegati a una rete locale. Alcuni computer sono costruiti specificamente per l’uso in cluster di computer, ma i cluster possono anche essere formati collegando computer originariamente progettati per funzionare in modo autonomo.
I computer massivamente paralleli hanno alcune somiglianze con i computer cluster, perché sono composti anche da più computer uniti insieme, ma sono molto più grandi e di solito contengono centinaia o migliaia di nodi. Hanno anche i propri componenti specializzati che collegano i singoli computer che li compongono, mentre i cluster di computer sono uniti da hardware standard, spesso indicato come componenti di base. I computer massivamente paralleli più avanzati possono essere davvero colossali, poiché contengono decine di migliaia di singoli computer che occupano migliaia di piedi quadrati di spazio, tutti lavorando insieme. La maggior parte dei supercomputer avanzati del mondo, utilizzati per calcoli complessi in aree come l’astrofisica e la modellazione del clima globale, sono di questo tipo.