Il calcolo parallelo, noto anche come programmazione parallela, è un processo in cui i problemi di calcolo di grandi dimensioni vengono suddivisi in problemi più piccoli che possono essere risolti simultaneamente da più processori.
I processori comunicano utilizzando la memoria condivisa e le loro soluzioni vengono combinate mediante un algoritmo. Il calcolo parallelo è molto più veloce del serial computing (noto anche come serial computation), il suo predecessore che utilizza un singolo processore per risolvere i problemi in sequenza.
Quando i computer sono stati inventati per la prima volta alla fine degli anni '40 e '50, il software era programmato per risolvere problemi in sequenza, cosa che limitava la velocità di elaborazione. Per risolvere i problemi più velocemente, gli algoritmi dovevano essere creati e implementati seguendo una serie di istruzioni su un'unità di elaborazione centrale (CPU). Solo dopo aver eseguito un'istruzione se ne poteva risolvere un'altra.
A partire dagli anni '50, il calcolo parallelo ha permesso ai computer di eseguire il codice in modo più rapido ed efficiente, suddividendo i problemi di calcolo in problemi più piccoli e simili. Questi problemi, noti come algoritmi paralleli, venivano poi distribuiti su più processori.
Oggi, i sistemi paralleli si sono evoluti al punto da essere utilizzati in vari computer, rendendo le attività quotidiane come il controllo delle e-mail o l'invio di un SMS centinaia di volte più veloci rispetto a quando fossero eseguite utilizzando il serial computing. Oltre ad alimentare dispositivi personali come laptop e smartphone, i sistemi paralleli alimentano anche i supercomputer più avanzati e le tecnologie all'avanguardia come l'intelligenza artificiale (IA) e l'Internet delle cose (IoT).
Il serial computing, noto anche come sequential computing, è un tipo di calcolo in cui le istruzioni per risolvere i problemi di calcolo vengono seguite una alla volta o in sequenza. I fondamenti del serial computing prevedono che i sistemi utilizzino un solo processore, anziché distribuire i problemi su più processori.
Con l'evoluzione dell'informatica, è stato introdotto il calcolo parallelo perché il serial computing non era abbastanza veloce. I sistemi operativi che utilizzano la programmazione parallela consentono ai computer di eseguire processi e calcoli simultaneamente, una tecnica nota come elaborazione parallela.
Elaborazione parallela e calcolo parallelo sono termini molto simili, ma vale la pena sottolineare alcune differenze. L'elaborazione parallela, o parallelismo, separa un'attività di tempo di esecuzione in parti più piccole da eseguire indipendentemente e contemporaneamente utilizzando più di un processore. In genere è necessaria una rete di computer o un computer con più di un processore per riassemblare i dati una volta risolte le equazioni su più processori.
Sebbene elaborazione parallela e calcolo parallelo siano talvolta usati in modo intercambiabile, l'elaborazione parallela si riferisce al numero di core e CPU in esecuzione insieme a un computer, mentre il calcolo parallelo si riferisce a ciò che il software fa per facilitare il processo.
Newsletter di settore
Resta al passo con le tendenze più importanti e interessanti del settore relative ad AI, automazione, dati e oltre con la newsletter Think. Leggi l' Informativa sulla privacy IBM.
L'abbonamento sarà fornito in lingua inglese. Troverai un link per annullare l'iscrizione in tutte le newsletter. Puoi gestire i tuoi abbonamenti o annullarli qui. Per ulteriori informazioni, consulta l'Informativa sulla privacy IBM.
La velocità e l'efficienza del calcolo parallelo sono alla base di alcune delle più importanti scoperte tecnologiche dell'ultimo mezzo secolo, tra cui smartphone, calcolo ad alte prestazioni (HPC), AI e apprendimento automatico (ML). Consentendo ai computer di risolvere problemi più complessi più velocemente e con meno risorse, il calcolo parallelo è anche un driver cruciale della trasformazione digitale per molte aziende.
L'interesse per il calcolo parallelo è iniziato quando programmatori e produttori di computer hanno iniziato a cercare nuovi modi per costruire processori più efficienti dal punto di vista energetico. Negli anni '50, '60 e '70, i leader della scienza e dell'ingegneria costruirono computer che utilizzavano lo spazio di memoria condiviso ed eseguivano operazioni parallele su set di dati per la prima volta.
Questi sforzi sono culminati nell'innovativo progetto Caltech Concurrent Computation, che ha introdotto un nuovo tipo di calcolo parallelo negli anni '80, utilizzando 64 processori Intel.
Negli anni '90, il supercomputer ASCI Red ha raggiunto un trilione di operazioni al secondo utilizzando processori paralleli di massa (MPP), un risultato senza precedenti, inaugurando un'era di predominio degli MPP nella potenza di calcolo.1 Allo stesso tempo, i cluster, un tipo di calcolo parallelo che collega cluster di computer o "nodi" su una rete commerciale, sono stati introdotti sul mercato, sostituendo infine gli MPP per molte applicazioni.
Il calcolo parallelo, in particolare i processori multi-core e le unità di elaborazione grafica (GPU), rimane una parte critica dell'informatica odierna. Le GPU vengono spesso distribuite contemporaneamente alle CPU per espandere la velocità di trasmissione dei dati ed eseguire più calcoli contemporaneamente, velocizzando molte applicazioni aziendali moderne.
Prima del calcolo parallelo, il serial computing costringeva i singoli processori a risolvere problemi complessi un passo alla volta, aggiungendo minuti e ore a compiti che calcolo parallelo avrebbe potuto svolgere in pochi secondi. Ad esempio, i primi iPhone utilizzavano il serial computing e potrebbero impiegare un minuto per aprire un'app o un e-mail. Oggi, il calcolo parallelo, utilizzato per la prima volta negli iPhone nel 2011, accelera notevolmente queste attività.
Man mano che l'informatica matura e affronta problemi più complessi, i sistemi devono eseguire migliaia o addirittura milioni di attività in un istante. I modelli ML odierni si basano fortemente sul calcolo parallelo, utilizzando algoritmi altamente complessi distribuiti su più processori. Utilizzando il serial computing, le attività di ML richiederebbero molto più tempo a causa dei colli di bottiglia causati dalla possibilità di eseguire un solo calcolo alla volta su un singolo processore.
Il calcolo parallelo e l'elaborazione parallela potenziano l'elaborazione di numeri su set di dati di grandi dimensioni, consentendo le query interattive alla base dell'analisi dei dati. Con più di un quintilione di byte di informazioni generate ogni giorno, le aziende possono avere difficoltà a vagliare le informazioni digitali alla ricerca di insight che sono utili. L'elaborazione parallela implementa computer con molti core in una struttura di dati e passa al setaccio i dati molto più velocemente di quanto potrebbe fare un computer seriale.
Armati di calcolo parallelo, i computer possono utilizzare le risorse in modo molto più efficiente rispetto ai loro omologhi di serial computing. I sistemi informatici più all'avanguardia di oggi distribuiscono più core e processori, consentendo loro di eseguire più programmi contemporaneamente ed eseguire più attività contemporaneamente.
Il calcolo parallelo si riferisce a molti tipi di dispositivi e architetture informatiche, dai supercomputer allo smartphone in tasca. Nella sua massima complessità, il calcolo parallelo utilizza centinaia di migliaia di core per affrontare problemi come la ricerca di un nuovo farmaco contro il cancro o l'aiuto nella ricerca di intelligenza extraterrestre (SETI). Nella sua forma più semplice, il calcolo parallelo ti aiuta a inviare un'e-mail dal tuo telefono più velocemente che se usassi un sistema di serial computing.
In linea di massima, nel calcolo parallelo si utilizzano tre architetture uniche: memoria condivisa, memoria di calcolo distribuita e memoria ibrida. Ogni architettura opera sulla propria interfaccia di passaggio dei messaggi (MPI), uno standard per tutte le architetture di calcolo parallelo. MPI delinea i protocolli per i programmi di trasmissione di messaggi in linguaggi di programmazione come C++ e Fortran. L'MPI open source è stato fondamentale per lo sviluppo di nuove applicazioni e software che si basano su funzionalità di calcolo parallelo.
L'architettura di memoria condivisa viene utilizzata nelle comuni applicazioni quotidiane di calcolo parallelo, come nei laptop o negli smartphone. In un'architettura di memoria condivisa, i computer paralleli si affidano a più processori per contattare la stessa risorsa di memoria.
La memoria distribuita viene utilizzata nelle architetture di cloud computing, il che la rende comune in molte applicazioni aziendali. In un sistema distribuito per il calcolo parallelo, più processori con le proprie risorse di memoria sono collegati in rete.
I supercomputer di oggi si basano su architetture a memoria ibrida, un sistema di calcolo parallelo che combina computer a memoria condivisa su reti di memoria distribuita. Le CPU connesse in un ambiente di memoria ibrida possono accedere alla memoria condivisa e alle attività assegnate ad altre unità sulla stessa rete.
Oltre alle tre architetture principali, esistono altre architetture di computer paralleli meno comuni progettate per affrontare problemi più grandi o compiti altamente specializzati. Questi includono processori vettoriali, per arrey di dati chiamati "vettori", e processori per l'elaborazione generica su unità di elaborazione grafica (GPGCU). Una di queste, CUDA, un'interfaccia di programmazione delle applicazioni (API) GPGCU proprietaria sviluppata da Nvidia, è fondamentale per il deep learning (DL), la tecnologia che sostiene la maggior parte delle applicazioni di AI.
Esistono quattro tipi di calcolo parallelo, ciascuno con finalità specifiche:
Il parallelismo a livello di bit si basa su una tecnica in cui la dimensione della parola del processore viene aumentata e il numero di istruzioni che il processore deve eseguire per risolvere un problema viene ridotto. Fino al 1986, l'architettura dei computer è progredita, aumentando il parallelismo a livello di bit da processori a 4 bit a processori a 8, 16, 32 e 64 bit, dove ogni generazione che superava la precedente. Forse l'esempio più famoso di progresso nel parallelismo dei bit è stato il Nintendo 64, primo esempio di applicazione mainstream a utilizzare i 64 bit.
L'instruction-level parallelism (ILP) è un tipo di calcolo parallelo in cui il processore sceglie quali istruzioni eseguire. Nell'ILP, i processori sono costruiti per eseguire determinate operazioni contemporaneamente per migliorare l'ottimizzazione delle risorse e aumentare la velocità effettiva.
Il parallelismo dei task è un tipo di calcolo parallelo che parallelizza il codice su diversi processori che eseguono contemporaneamente attività sugli stessi dati. Il parallelismo dei task viene utilizzato per ridurre il tempo seriale eseguendo le attività contemporaneamente, come avviene per esempio nel pipelining, in cui una serie di attività viene eseguita su un singolo set di dati.
Più avanzato di ILP, il superword-level parallelism (SLP) è una tattica di vettorializzazione utilizzata nel codice inline. La vettorializzazione è un processo di calcolo parallelo utilizzato per completare più attività simili contemporaneamente, risparmiando tempo e risorse. SLP viene utilizzato per identificare le istruzioni scalari ridondanti in un blocco di codice e combinarle in un'unica operazione di superword.
Dalle blockchain agli smartphone, dalle console di gioco ai chatbot, il calcolo parallelo è una parte essenziale di molte delle tecnologie che guidano il nostro mondo. Ecco alcuni esempi:
Molti smartphone si affidano all'elaborazione parallela per svolgere le proprie attività in modo più rapido ed efficiente. Ad esempio, l'iPhone 14 ha una CPU a 6 core e una GPU a 5 core che potenziano la sua capacità leader di mercato di eseguire 17 trilioni di attività al secondo, un livello di prestazioni impensabile utilizzando il serial computing.
La tecnologia della blockchain, la stessa alla base delle criptovalute, delle macchine per il voto, dell'assistenza sanitaria e di molte altre applicazioni avanzate della tecnologia digitale, si basa sul calcolo parallelo per connettere più computer e convalidare transazioni e input. Il calcolo parallelo permette di elaborare le transazioni in una blockchain contemporaneamente anziché una alla volta, il che la rende altamente scalabile ed efficiente e aumenta la produttività.
I laptop più potenti di oggi, MacBook, ChromeBook e ThinkPad, utilizzano chip con più core di elaborazione, una base di parallelismo. Esempi di processori multicore includono Intel Core i5 e HP Z8, che consentono agli utenti di modificare video in tempo reale, eseguire grafica 3D ed eseguire altre attività complesse e che richiedono molte risorse.
L'Internet of Things (IoT) si basa sui dati raccolti dai sensori connessi a internet. Una volta raccolti i dati, è necessario il calcolo parallelo per analizzarli alla ricerca di insight e aiutare i sistemi complessi, come centrali elettriche, dighe e sistemi di traffico, a funzionare. Il serial computing tradizionale non è in grado di setacciare i dati abbastanza velocemente da consentire all'IoT di funzionare, il che rende il calcolo parallelo fondamentale per il progresso della tecnologia IoT.
Il calcolo parallelo svolge un ruolo critico nella formazione di modelli di ML per applicazioni di AI, come il riconoscimento facciale e l'elaborazione del linguaggio naturale (NLP). Eseguendo le operazioni contemporaneamente, il calcolo parallelo riduce significativamente il tempo necessario per addestrare i modelli di ML in modo accurato sui dati.
Il computer che gestisce lo space shuttle si affida a cinque computer IBM® AP-101 che operano in parallelo per controllarne l'avionica e monitorare i dati in tempo reale. Queste potenti macchine, che vengono utilizzate anche nei jet da combattimento, possono eseguire quasi 500.000 istruzioni al secondo.
I supercomputer si affidano così tanto al calcolo parallelo che vengono spesso chiamati computer paralleli. Il supercomputer American Summit, ad esempio, elabora 200 quadrilioni di operazioni al secondo per aiutare gli umani a comprendere meglio la fisica e l'ambiente naturale.2
IBM Spectrum LSF Suites è una piattaforma di gestione dei workload e un programma per la pianificazione dei lavori per il calcolo ad alte prestazioni (HPC) distribuito.
Le soluzioni HPC hybrid cloud di IBM aiutano ad affrontare attività ad alta intensità di calcolo su larga scala e a velocizzare il tempo di generazione di insight.
Trova la soluzione di infrastruttura cloud adatta alle esigenze della tua azienda e scala le risorse on-demand.