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.
La NIS2 è complessa da capire?
Non perdere tempo, segui l'anteprima gratuita del corso che stiamo preparando.Accedi quindi alla nostra Academy e segui l'anteprima del corso della durata di 30 minuti per comprendere i contenuti esclusivi che tratteremo nel corso.per ulteriori informazioni, scrivici ad [email protected] oppure scrivici su Whatsapp al 379 163 8765
Supporta RHC attraverso:
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.
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.
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).
Un breve excursus negli anni per avere un idea dell’evoluzione della potenza dei super-calcolatori nel tempo. Calcolo ad alte prestazioni
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.
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.
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.
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