Red Hot Cyber
La cybersecurity è condivisione. Riconosci il rischio, combattilo, condividi le tue esperienze ed incentiva gli altri a fare meglio di te.
Cerca
Crowdstrike

Parallel Computing (Il Calcolo Parallelo)

Carlo Denza : 19 Ottobre 2022 08:00

Autore: Carlo Denza

In questo articolo, il focus sarà sulle alte prestazioni in campo computazionale. Una panoramica sul perché e sui fondamentali alla base del calcolo parallelo. Cercheremo di fare in modo che chi legga questo articolo possa sollevare il velo su concetti alla base della programmazione e delle tecnologie che si nascondono dietro questo tipo di computazione, ormai sempre più diffuso e necessario.

L’obiettivo principale è quello di dare una idea seppur generica di cosa si cela dietro l’hardware e gli algoritmi utilizzati, capaci di raggiungere le alte prestazioni su apposite macchine da calcolo.

Una seppur minima, conoscenza pregressa di concetti quali, algoritmo o di linguaggio di programmazione di base serviranno a chiarire meglio alcuni concetti.

In caso contrario, non preoccupatevi, questi concetti non sono poi cosi inarrivabili come si potrebbe pensare ed alla fine, una volta conosciuti, riuscirete anche a spiegarli agli amici.

Iniziamo.

Introduzione

In letteratura un primo riferimento all’utilizzo di uno strumento di calcolo capace di fornire più risultati nello stesso tempo, è quello comparso nella pubblicazione della biblioteca universale di Ginevra risalente al 1842 il cui titolo era ” Sketch of the Analytical Engine Invented by Cherles Babbege ” ad opera di J.F. Menabrea.

Il suddetto articolo discuteva della necessità di avere una macchina di calcolo da poter impiegare nel caso in cui si dovessero eseguire una lunga serie di calcolo identici, come ad esempio un insieme di moltiplicazioni di due numeri costituiti ognuno da venti cifre, risparmiando in tal modo tempo e processi, riuscendo tale macchina a fornire più risultati contemporaneamente.

Non sappiamo se il parallelismo fosse effettivamente implementato dalla  macchina analitica , ma in ogni caso, già a quei tempi fu chiaro l’impatto dello strumento di calcolo sulla metodologia di risoluzione di un problema scientifico e non solo.

Lo Scopo del calcolo ad Alte Prestazioni

Iniziamo a fissare i primi punti ponendoci alcune domande.

In primo luogo chiediamoci: a cosa serve il calcolo ad alte prestazioni?

La risposta può sembrare banale, ma in realtà non lo è. L’obbiettivo del calcolo ad alte prestazioni e quindi di un super computer è quello di risolvere problemi.

Con il termine “super-calcolatore” ci riferiamo ad un sistema che fornisce le prestazioni più elevate in quel dato momento.

E come si misurano le prestazioni di un super-calcolatore?

La  prestazione di un super-calcolatore viene misurata dal tempo necessario per risolvere una particolare applicazione (application – dependent).

Evoluzione negli anni

Un breve excursus negli anni per avere un idea dell’evoluzione della potenza dei super-calcolatori nel tempo.  Calcolo ad alte prestazioni

  • Anni 70-80 : 10 6  flops ( M FLOPs)  Calcolatori sequenziali-scalari   “CDC 7600 “, ” IBM 360 “.
  • Anni  80-90 : 10 9  flops( G FLOPs)   Calcolatori vettoriali ” CRAY 1 “, ” CRAY X-MP “.
  • Anni 90-2000 : 10 12 flops( T FLOPs)   Calcolatori a parallelismo massiccio ” CRAY T3D “, ” ASCI White “.
  • Anni 2000-2010 : 10 15 flops( P FLOPs)  Calcolatori a parallelismo massiccio ” CRAY Jaguar “.
  • Anni 2011-2016 : 10 17 flops( 187 P FLOPs)  – Summit, oak Ridge Lab

Come è possibile vedere si è passati da milioni (M) di operazioni al secondo negli anni 70-80 a milioni di miliardi di operazioni al secondo

I nostri computer, ovvero un moderno notebook di fascia media è un grado di fare all’incirca, 10 miliardi di operazioni al secondo. Confrontabile con la capacità di calcolo di un super- computer  di fine anni Ottanta inizio anni Novanta. Pur non essendo un supercalcolatore, un moderno notebook avrebbe potuto essere tale se fosse esistito negli anni precedenti.

Perché è necessario il calcolo parallelo

Chiariamolo con un esempio. Le previsioni Meteorologiche, data la complessità dei calcoli e la capacità di calcolo necessaria per effettuarli, con un normale PC si potrebbe arrivare al paradosso di avere le previsioni meteo, riguardanti i successivi 2 giorni, dopo 23 giorni di calcolo, il che non è proprio entusiasmante o di qualche utilità.

Una previsione meteo dovrebbe, anzi deve, fornire informazioni in tempo reale o al più dopo mezz’ora. Ometto tutti i calcoli algebrici necessari per non complicare ulteriormente la spiegazione. Quindi, maggiori prestazioni consentono di risolvere problemi in tempo reale e risolvere problemi di grandi dimensioni, su larga scala.

La TOP500

Esiste una Top, la Top 500, che si tiene ogni anno negli Stati Uniti. In questa manifestazione tutti i produttori presentano il loro nuovo hardware e software per il calcolo delle altre prestazioni. La manifestazione “Top 500” è nata nel 1993 uno dei fondatori coinvolto sin dall’inizio è stato Jack Dongarra. Dongarra utilizzò per i benchmark una libreria scritta da Lui, “Linpack” per valutare le prestazioni dei super-calcolatori, da 25 anni questa libreria restituisce una misura standardizzata per i super-calcolatori. Dongarra è specializzato in algoritmi numerici in algebra lineare, calcolo parallelo, metodologia di programmazione e strumenti per computer paralleli e ricopre vari ruoli presso alcune Università,

La 59a edizione del TOP500 (Giugno 22), Il primo posto  è ora detenuto dal sistema Frontier presso l’Oak Ridge National Laboratory (ORNL) negli Stati Uniti. Basato sulla più recente architettura HPE Cray EX235a e dotato di processori AMD EPYC 64C a 2GHz, il sistema ha 8.730.112 core totali, un’efficienza energetica di 52,23 gigaflops/watt e si basa su Gigabit Ethernet per il trasferimento dei dati.

Tipi di Parallelismo

L’architettura di un calcolatore sequenziale è basato sullo schema della macchina di  Von Newman   dove troviamo un unica unità di elaborazione preposta all’esecuzione di un insieme di istruzioni. In particolare è presente una singola unità preposta all’esecuzione delle operazioni logico-aritmetiche cioè la ( ALU ).

Tale organizzazione può essere paragonata  una squadra di tre operai intenta a costruire una casa ci troveremmo nella condizione in cui un singolo operaio espleta, da solo, l’intero lavoro. Occupandosi, sempre da solo, dei singoli compiti un passo per volta e eseguendo le diverse parti di ogni lavoro secondo un certo ordine. Questo operare è lento e faticoso, infatti molti compiti potrebbero essere svolti più rapidamente se distribuiti tra più operai e contemporaneamente all’opera. Analogamente la nostra  ALU   può essere divisa in segmenti,  dove ciascun segmento è preposto all’esecuzione di ogni singola fase dell’operazione. Questa idea è implementata già da anni nei processori

Carlo Denza
Diplomato in informatica, e come perito elettronico. Ha frequentato il Corso di Studio in Informatica presso la facoltà di Scienze MM.FF.NN. alla Federico II di Napoli. Dopo un corso in Java, collabora allo sviluppo di un applicazione web per servizi nell’ambito sanitario. Pubblica un pamphlet, una raccolta di articoli a carattere divulgativo.