La frontiera - CINI HPC-KTT

Green Computing: tutte le sfide per costruire supercalcolatori a ridotto impatto energetico

Non è possibile realizzare un supercalcolatore senza il green computing: i progetti in corso al CINI, i migliori metodi, come funzionano i circuiti integrati e perché il modello Dennard non funziona più, come power e thermal wall incidono sui consumi, il ruolo dell’accelerazione vettoriale

15 Feb 2022
Giovanni Agosta

Politecnico di Milano e CINI HPC-KTT

Andrea Bartolini

Università di Bologna-DEI e CINI HPC-KTT

William Fornaciari

Politecnico di Milano-DEIB e CINI HPC-KTT

Mauro Olivieri

Sapienza Università di Roma e CINI HPC-KTT

Sergio Saponara

Università di Pisa e CINI HPC-KTT

Il green computing è l’unica strada per arrivare alla realizzazione dei supercalcolatori. Infatti, i sistemi di calcolo ad alte prestazioni (HPC), risorsa chiave nello sviluppo socio-economico, consumano un’elevata quantità di energia e rappresentano una frazione significativa dell’impronta di carbonio ICT.

L’importanza del green computing

Il consumo energetico è uno dei fattori cardine che ne limita lo sviluppo: è difficile pensare ad una macchina di calcolo progettata per consumare 20Mwatt afflitta dallo stesso problema che affligge uno qualsiasi dei possessori degli 80M di smartphone in Italia[1]: come far durare fino a sera la carica della batteria dello smartphone.

WHITEPAPER
Quali caratteristiche delle VDI garantiscono un aumento di produttività
Datacenter
Virtualizzazione

Sostenibilità e digitale, “coppia di fatto” della trasformazione energetica: l’Italia a un bivio

L’Exascale computing è un sistema di calcolo capace di eseguire 218 operazioni aritmetiche in doppia precisione al secondo, atteso dagli scienziati, ingegneri e progettisti di tutto il mondo dal 2020, e adesso nel 2023: realizzarlo ha richiesto un cambiamento radicale di approccio alla progettazione, necessario ad aumentarne l’efficienza energetica.

Va sempre considerato che una soluzione ovvia alla riduzione dei consumi è quella di non eseguire calcoli, ma questa non è applicabile a sistemi che sono stati progettati per mettere a disposizione della società, dell’industria e della scienza le massime prestazioni possibili in quel determinato momento e che quindi devono essere sfruttate al 100% per tutto il loro tempo di vita.

Ne consegue che le soluzioni di interesse nell’ambito del green computing e dell’efficientamento energetico di questi sistemi non devono dare origine a una perdita di performance e questo richiede di combinare le necessità delle applicazioni con le strategie di efficientamento energetico del calcolo.

Per questo, il Laboratorio Nazionale CINI “High Performance Computing: Key Technologies and Tools” (HPC-KTT) ed i suoi consorziati sono impegnati in attività di ricerca per lo sviluppo di soluzioni che combinino la conoscenza delle applicazioni, delle architetture e degli strati software per supportare la riduzione dei consumi in sistemi di Calcolo HPC.

In questo articolo, descriviamo quali sono le tendenze del settore per ridurre la propria impronta energetica e quali strategie possono essere adottate a livello hardware e software per ridurre i consumi senza sacrificare le performance.

Green Computing: perché il modello Dennard non funziona più

L’ingegnere Robert Dennard, nel 1974, si rese conto che con la miniaturizzazione del processo di fabbricazione CMOS, nota anche come legge di Moore [2], fosse possibile ridurre, oltre alla superficie e alle dimensioni caratteristiche dei transistor, anche lo spessore dell’ossido di gate e conseguentemente la tensione di soglia [3] e la tensione di alimentazione.

Risultati: incremento di funzionalità (#transistors = # di unità di elaborazione) di 4x, operanti al doppio della velocità (2x frequenza del segnale di clock), una riduzione di 2x nella tensione di alimentazione, una riduzione di 2x delle geometrie dei transistor, una riduzione dei consumi per il singolo transistor di 4x.

In altre parole, diventò possibile operare il quadruplo dei transistor al doppio della velocità mantenendo costante il consumo di potenza.

All’inizio degli anni Duemila, per problemi tecnologici, la riduzione dello spessore dell’ossido nei transistor ha raggiunto un plateau [4] dando origine a quello che negli anni successivi ha rappresentato una delle maggiori sfide per lo sviluppo dei sistemi digitali: il power wall.

circuiti integrati - modello dennard - green computing

Figure 1: Modello ad alto livello dei consumi di un processore. La potenza è composta da due termini: potenza dinamica e potenza statica. Complessivamente si comporta come un invertitore CMOS, con il consumo di potenza statica dipendente esponenzialmente dalla tensione di alimentazione (VDD), dalla temperatura (T) e dalla tensione di soglia (VTH) e con il consumo di potenza dinamica che dipende linearmente dalla frequenza di clock (FCLK), con il quadrato della tensione di alimentazione (VDD), e linearmente con la capacità efficace (Ceff).

Oggi i circuiti digitali dei processori usati dagli smartphone fino ai sistemi ad alte prestazioni sono quasi interamente composti da transistor MOS.

I circuiti digitali sono composti da un’infinità di porte logiche, i gate, che compongono l’architettura interna dei processori moderni sotto forma di pipeline, unità funzionali, memory controller, ma anche memorie e cache: i gate si comportano, macroscopicamente, come un invertitore CMOS.

E in un invertitore CMOS, il consumo di potenza è regolato da due principali contributi: la potenza statica e la potenza dinamica.

La potenza statica è spesa per tenere le porte logiche accese, alimentate: cresce esponenzialmente al crescere della tensione di alimentazione, della temperatura di esercizio, mentre cala al crescere della tensione di soglia.

Maggiore è il numero delle porte logiche, maggiore è la potenza statica, proporzionale all’area di silicio.

Il contributo di potenza statica non è legato quindi a un lavoro utile ma subentra tutte le volte che una porta logica è alimentata, anche se non coinvolta dal calcolo. Spesso si fa riferimento alla potenza statica come alla potenza di leakage, in quanto il suo contributo principale è legato alle correnti di leakage (perdita).

La potenza dinamica è invece spesa tutte le volte che il valore logico in uscita ad una porta logica varia (commuta da 0 a 1 o viceversa). È quindi una potenza utile, spesa per ottenere un’operazione logica, l’accesso a un dato, un calcolo.

Bisogna ricordarsi che nei circuiti digitali in tecnologia CMOS il valore logico è realizzato come carica immagazzinata nelle capacità elettriche intrinseche ai transistor: maggiore sarà il numero di porte logiche coinvolte nell’operazione, maggiore sarà la capacità e la carica necessaria per commutare il valore logico, e maggiore sarà il consumo dinamico di potenza.

Questo contributo alla potenza dinamica prende il nome di capacità efficace e macroscopicamente è una proprietà dell’operazione/istruzione/tipologia di calcolo svolto.

La relazione tra il consumo di potenza dinamica e la capacità efficace è lineare. Non solo il tipo di operazione, e quindi la capacità efficace, influisce sul consumo di potenza dinamico ma anche la frequenza con cui essa viene svolta. Abbiamo infatti che la potenza dinamica dipende linearmente dalla frequenza di clock, il segnale di temporizzazione che scandisce all’interno dei circuiti digitali l’inizio di una nuova istruzione/operazione.

Infine, la potenza dinamica dipende dalla tensione di alimentazione e cresce con il quadrato di essa.

A partire dagli anni 2000, l’industria elettronica e quella dei processori si è trovata di fronte al power wall: con il fermarsi dello scaling dello spessore dell’ossido dei transistor, anche la tensione di soglia dei transistor (a meno dell’introduzione di nuovi materiali, a più alta permeabilità elettrica rispetto all’ossido di silicio) ha smesso di ridursi, insieme allo scaling tecnologico delle dimensioni dei transistor [2].

Senza riduzione della tensione di soglia, è venuta meno la riduzione della tensione di alimentazione e, poiché la potenza dinamica dipende dal quadrato della tensione di alimentazione, è venuta meno anche la riduzione quadratica sul consumo di potenza dinamico delle singole porte logiche.

Green computing: come power e thermal wall incidono sui consumi

A partire dagli anni 2000, con la progressiva riduzione della dimensione dei transistor si può quindi aumentare la frequenza di clock, ma se lo si fa non si riduce più il consumo di potenza del transistor. Il risultato è che si può integrare un numero maggiore di transistor per unità di area ma la densità di potenza (watt/mm2) ora cresce.

Densità di potenza maggiore implica maggiori correnti entranti nel die e maggiore calore prodotto. E, purtroppo, entrambe queste grandezze hanno dei limiti tecnologici: la corrente entrante all’interno del die di silicio è limitata dal numero di pad e quindi dall’area del package che incapsula il die, mentre il calore che può essere rimosso dal die è limitato dalla resistenza termica del package e del dissipatore.

Ne consegue che esiste un limite pratico alla massima potenza che può essere consumata da un processore e che da qualche decade questa limita le performance ottenibili dai processori per il calcolo: questo limite prende il nome di power e thermal wall.

Questo effetto è visibile osservando l’andamento delle performance e dell’efficienza energetica delle installazioni dei supercalcolatori mondiali al passare degli anni, come riportato in Figura 1.

La Top500 [5] classifica due volte l’anno i 500 calcolatori più performanti al mondo, dove le prestazioni sono misurate come numero di operazioni aritmetiche “floating point a doppia precisione eseguite al secondo” (FLOPs), durante la risoluzione di un sistema lineare denso in aritmetica a doppia precisione (64 bit). I calcolatori classificati in questa lista prendono il nome di supercalcolatori.

green computing

Figure 2: Incremento in performance del supercalcolatore più veloce al mondo per ogni anno. In blu troviamo le performance misurate in operazione floating point in doppia precisione per secondo (FLOPs) e in verde l’energia consumata per singola operazione floating point in doppia precisione (FLOP). Considerando un consumo massimo per supercalcolatore pari a 20MWatt se ne deduce che il consumo energetico per FLOP per la macchina exascale debba essere di 20 pJ/FLOP. Questo limite è rappresentato in figura con una riga blu e verde.

La lista Green500 [6] invece ordina i supercalcolatori classificatisi nella Top500 in funzione della loro efficienza energetica.

Efficienza energetica che viene misurata come GFLOPs/Watt, ovvero Giga operazioni aritmetiche floating point in doppia precisione al secondo eseguite per Watt di potenza consumata. Il reciproco di questa misura dell’efficienza energetica di un sistema è pari all’energia per FLOP (Joule/FLOP).

Si nota, in figura 1, come a partire dagli anni 2000 un aumento delle performance del supercalcolatore in cima alla Top500 sia avvenuto sempre a seguito di una riduzione dell’energia spesa per FLOP e quindi ad un aumento dell’efficientamento energetico.

Sappiamo, da quanto detto in precedenza, che a seguito della fine dello scaling tecnologico secondo il modello di Dennard, questo aumento dell’efficientamento energetico non avviene solo grazie al processo di miniaturizzazione dei transistor, ma è legato a nuovi approcci al progetto dei sistemi di calcolo. Questi approcci prendono il nome di specializzazione e gestione dinamica dei consumi.

Green computing: come funziona la gestione dinamica dei consumi

La gestione dinamica dei consumi fa riferimento all’introduzione nelle architetture e nei sistemi di calcolo di meccanismi hardware e software per controllare il consumo di potenza e la temperatura di esercizio, insieme alle prestazioni dei diversi sottosistemi HW realizzati sia su silicio che a livello di sistema di calcolo.

Nei processori moderni, e sulle schede che li integrano, vengono infatti integrati sensori di temperatura e dei consumi insieme a circuiti che permettono di modificare le tensioni di alimentazione e la frequenza di clock per diversi sottosistemi HW, quali i diversi core, memory controller, interfacce di comunicazione e acceleratori.

La lettura periodica delle grandezze sotto controllo, quali temperatura e potenza di esercizio, e l’attuazione tramite la variazione dei parametri operativi, quali frequenza di clock e tensioni di attuazione, viene demandata a sottosistemi hardware e software che realizzano politiche di controllo in retroazione[7] [8].

Tali sistemi di gestione dinamica dei consumi sono integrati a livello di sistema operativo, e di gestione delle risorse, e necessitano di meccanismi e strumenti software per sfruttare informazioni provenienti dall’applicazione per massimizzare le prestazioni nel caso di applicazioni parallele distribuite.

Infatti, nel mondo del supercalcolo e dei sistemi ad alte prestazioni, bisogna garantire che i processori operino sempre al massimo delle loro performance e che ci sia una riduzione dei consumi e delle performance solo quando l’applicazione risulta meno sensibile ad una riduzione delle performance. Questo è il caso, ad esempio, di fasi dell’applicazione in cui c’è uno scambio di messaggi, accesso alla memoria intensivo e accesso all’I/O.

La specializzazione corrisponde all’introduzione di nuovi paradigmi computazionali all’interno delle architetture di calcolo fatte su misura per alcuni domini applicativi. Questa ottimizzazione delle architetture per alcuni domini applicativi dà origine ad una significativa riduzione del costo energetico e conseguente aumento prestazionale.

Affinché queste migliorie siano efficaci ed applicabili ad una vasta platea di problemi computazionali è necessario accoppiare con nuovi paradigmi di programmazione e strumenti di supporto software. Infatti, una architettura specializzata è per sua natura più complessa e richiede di strumenti per estrarne la complessità e nasconderla al programmatore. Sono esempi di architetture specializzate: gli acceleratori, le GPU, le architetture con supporto dell’algebra vettoriale e le architetture con supporto all’algebra a precisione ridotta.

La figura 3 mostra l’efficienza energetica di diverse architetture di classe superiore ai 10 PetaFlop presenti oggi nella lista Top500. L’efficienza energetica dichiarata per supercalcolatori con una performance superiore a 10 PFlop, nella Top500 di novembre 2021.

I numeri relativi all’efficienza energetica sono ricavati dalla lista Green500. Sull’asse delle ascisse è riportato il valore di efficienza energetica, mentre sull’asse delle ordinate sono indicati gli acceleratori usati. Nel caso di sistemi non accelerati è riportata la famiglia del processore. Possiamo vedere come i sistemi con acceleratore risultino più efficienti.

Va notato come il sistema odierno classificato 1° nella Top500, Fugaku installato a Riken in Giappone, capace di 442 Petaflop e basato sui processori Fujitsu A64FX [23] abbia un’efficienza energetica pari a 15.42 GFLOPs/Watt grazie alla combinazione di un ISA RISC ARM e con supporto all’algebra vettoriale.

green computing

Figure 3: L’efficienza energetica (GFlops/Watt) riportata per diverse classi di acceleratori e famiglie di processori presenti nella Green500 di Novembre 2021 con prestazioni superiori ai 10 Petaflop

Quasi tutta l’energia consumata da un sistema HPC è convertita in calore e quindi, oltre alla potenza strettamente richiesta per il calcolo, è necessario tener conto di un’importante frazione di potenza per il raffreddamento dell’infrastruttura.

Consideriamo Tianhe-2, che nel 2014 era il supercalcolatore più veloce al mondo: capace di 33,2 PFLOPs con una dissipazione di potenza pari a 17,8 Mwatt, tale consumo cresce a 24 MWatt se si considera anche il consumo legato all’infrastruttura di raffreddamento[9].

A questo riguardo, è stato introdotto il fattore PUE, che misura l’energia consumata da un supercomputer per fornire 1 watt di potenza.

Per ridurre la capacità di raffreddamento necessaria a dissipare la potenza si utilizza il raffreddamento avanzato, basato sul raffreddamento a liquido e sul “free cooling”.

Il primo riduce la resistenza termica e ne aumenta la capacità termica, ottenendo così una temperatura più alta del mezzo refrigerante ed un costo frigorifero inferiore. Il secondo, invece, prevede uno scambio diretto del calore con l’ambiente esterno, riducendo così drasticamente la capacità di raffreddamento ed evitando che gli scambiatori refrigeranti debbano produrre aria o acqua fredda. Tuttavia, l’efficacia di questa tecnica è limitata dalle condizioni ambientali (umidità e temperatura).

Ridurre il PUE ed in generale aumentare l’efficienza energetica dei supercalcolatori e dei sistemi di calcolo ad alte prestazioni ha il potenziale di ridurre il costo operativo del sistema ma anche di ridurre il suo impatto ambientale.

Nella seguente sezione, verranno presentati una lista di progetti in cui gli autori sono coinvolti per lo sviluppo di tecnologie a supporto del Green Computing insieme ad una descrizione delle tecnologie.

Green Computing: le iniziative del CINI in corso

Tra le diverse iniziative di green computing che fanno riferimento ai membri del Laboratorio Nazionale CINI ed alle università consorziate finanziate dal programma EU EuroHPC troviamo:

REGALE

Ha l’obiettivo di sviluppare uno stack software per la gestione dei consumi all’interno di sistemi di calcolo HPC a larga scala. Fanno parte del progetto il gruppo di ricerca del ECS Lab e EEES Lab del dipartimento DEI dell’Università di Bologna, nonché il CINECA ed E4 Computer Engineering s.p.a.

EUPEX

L’obiettivo è di creare una macchina prototipo per il supercalcolo, compatibile con gli ambienti di produzione basata su tecnologie europee, in particolare l’architettura OpenSequana sviluppata da Atos/Bull. All’interno di questo progetto è coinvolto il Laboratorio Nazionale CINI HPC-KTT con le unità dell’Università di Bologna, dell’Università di Pisa, Università di Torino, e del Politecnico di Milano, nonché il CINECA, l’INGV, l’INAF, SECO s.p..a ed E4 Computer Engineering s.p.a.

The European Pilot

Ha l’obiettivo di sviluppare una macchina prototipo complementare a quella di EUPEX, rivolta in questo caso a integrare alla scala necessaria per il supercalcolo i processori europei sviluppati dall’European Processor Initiative. In questo progetto sono coinvolte l’Università di Bologna e il Laboratorio Nazionale CINI HPC-KTT con le unità dell’Università di Pisa, Università di Torino, Università di Roma La Sapienza, e del Politecnico di Milano.

EPI

Obiettivo: sviluppare la prima generazione di processori europei per l’exascale computing. Il progetto è diviso in quattro stream, con focus nello sviluppo di un processore general purpose basato su ISA ARMv9, di un acceleratore basato su ISA RISC-V, con estensioni HW per l’accelerazione di calcolo vettoriale, stencil, tensoriale e a precisione variabile. Il progetto ha appena terminato la prima fase ed ora sta entrando nella seconda fase. Sono coinvolte l’Università di Bologna, l’Università di Pisa, E4 Computer Engineering s.p.a., STMicroelectronics s.p.a ed i Labs di Leonardo s.p.a. ed il CINECA. Sapienza Università di Roma partecipa come third-party del Barcelona Supercomputing Center.

TEXTAROSSA

Il progetto si pone l’obiettivo di incrementare le prestazioni e l’efficienza energetica dei futuri sistemi di calcolo exascale, aumentando l’efficienza del calcolo e nuova aritmetica a precisione variabile, nonché di fornire metodi e strumenti per la perfetta integrazione di acceleratori riconfigurabili in piattaforme multi-nodo HPC eterogenee. In questo progetto, guidato da ENEA, sono coinvolti il Laboratorio Nazionale CINI HPC-KTT con le unità dell’Università di Pisa, Università di Torino, e del Politecnico di Milano, nonché il CNR e l’INFN.

eProcessor

Il progetto triennale eProcessor (2021 – 2024) mira a sviluppare e realizzare un nuovo processore Out-of-Order open source per HPC, compatibile con l’instruction set RISC-V e dotato di accelerazione vettoriale e sistolica, e fornire il primo ecosistema full-stack europeo completamente open source basato su questa nuova CPU. Il progetto è guidato dal Barcelona Supercomputing Center e per l’Italia vi partecipa la Sapienza Università di Roma.

Green computing: i metodi per ridurre i consumi nell’esecuzione di applicazioni

Nell’ambito del supercalcolo, ed in generale dei sistemi di calcolo ad alte prestazioni composti da più nodi di calcolo connessi tramite un’interfaccia di rete a bassa latenza, le applicazioni sono scritte per eseguire in parallelo su più nodi di calcolo.

La comunicazione all’interno della singola applicazione avviene tramite scambio di messaggi: il Message Passing Interface (MPI) è uno protocollo per realizzare questa comunicazione.

Esistono diverse librerie che realizzano lo standard MPI e che vengono usate all’interno di diverse applicazioni scientifiche. Le applicazioni che sono scritte secondo il paradigma MPI alternano fasi di computazione a fasi di comunicazione. Queste fasi possono durare da decine di microsecondi a decine di secondi.

Ci sono stati diversi approcci orientati all’aumento dell’efficientamento energetico delle applicazioni durante la loro esecuzione: i più pervasivi sono trasparenti al programmatore ed utilizzatore del sistema di calcolo, altri invece richiedono di modificare il codice dell’applicazione per inserire direttive di riduzione dei consumi[10]–[15].

Tutti gli approcci presenti allo stato dell’arte sfruttano la capacità dei processori odierni di variare la dinamicamente la propria tensione di alimentazione, la frequenza di clock ed in alcuni casi di spegnere sottosistemi hardware e/o di bloccare la distribuzione del segnale di clock in modo selettivo.

Questi meccanismi appartengono alle strategie di low-power design e prendono il nome di: Dynamic Voltage Scaling (DVS), Dynamic Frequency Scaling (DFS), Dynamic Voltage and Frequency Scaling (DVFS), Power Gating (PG), Clock Gating (CG).

A livello di processore, questi meccanismi sono combinati in stati di power management. Nello standard ACPI questi vengono racchiusi in performance states (P-state), e processor states (C-states). Generalmente i C-states racchiudono i meccanismi di power e clock gating, mentre i P-states racchiudono i meccanismi di Dynamic Frequency e Dynamic Frequency and Voltage Scaling. Il sistema di calcolo sfrutta questi meccanismi per aumentare l’efficienza energetica durante l’esecuzione delle applicazioni, con algoritmi più o meno sofisticati che cercano di seguire i requisiti delle applicazioni.

COUNTDOWN

COUNTDOWN [14, 15] è una libreria software sviluppata da Università di Bologna in collaborazione con CINECA per la riduzione dei consumi in sistemi di calcolo ad alte prestazioni durante l’esecuzione di applicazioni parallele sviluppate con il paradigma MPI.

COUNTDOWN esegue in modo trasparente all’utente e all’applicazione, e permette di separare a run-time all’interno dell’applicazione le regioni di comunicazione da quelle di calcolo.

Tramite quest’approccio, è possibile focalizzare la riduzione dei consumi solo nelle regioni di comunicazione, mantenendo così alte performance. COUNTDOWN è stato testato all’interno dei sistemi CINECA e ha dimostrato di essere capace di ridurre i consumi (10% in media) per un ampio numero di applicazioni senza ridurre sensibilmente le performance, con overhead sempre sotto l’1% [15].

Barbeque

Barbeque (BBQ) è un Run-Time Resource Manager (RTRM) sviluppato dal Politecnico di Milano, che consente la gestione delle risorse presenti su un nodo di calcolo tra più applicazioni, tenendo conto delle risorse disponibili (elementi di elaborazione, memorie, larghezza di banda), delle esigenze applicative e delle priorità espresse attraverso “ricette”, che forniscono diversi punti operativi per l’applicazione, utilizzando diverse quantità di risorse [16].

La gestione delle risorse è dinamica: la riallocazione è consentita attraverso il feedback dell’applicazione, che viene fornito dalla raccolta di heartbeat. BBQ supporta tre principali modalità di integrazione: (1) tramite i modelli di programmazione OpenCL e mangolibs per C/C++, che supportano l’integrazione trasparente con BBQ per piattaforme eterogenee; (2) l’Adaptive Execution Model, che è un modello generico disponibile in C++, Python e Fortran e consente la gestione di piattaforme omogenee; (3) un controllo leggero, in cui non è necessaria alcuna integrazione, ma non vi è alcun feedback sulle prestazioni dell’applicazione.

PULPcontroller

PULPcontroller [17] è invece un sottosistema HW, completamente open-source, progettato per essere integrato all’interno dei processori di calcolo ad alte prestazioni e gestirne i consumi.

Il progetto open-source è sviluppato in collaborazione dall’Università di Bologna e l’IIS Laboratory dell’ETH di Zurigo ed estende l’architettura PULP Platform [18] per la gestione a 360 gradi dei consumi all’interno dei processori per l’HPC ed il loro efficientamento energetico. Tramite PULPcontroller è possibile eseguire un firmware di power management integrato con il processore stesso. PULPcontroller è open-source e basato su architettura RISC-V.

Green computing: il ruolo dell’accelerazione vettoriale

L’accelerazione vettoriale apparve per la prima volta nei processori HPC dei primi anni ’70 per aumentare le prestazioni (spesso misurate in MFLOPS – Milioni di operazioni in virgola mobile al secondo) degli algoritmi scientifici che elaborano matrici e vettori di numeri reali [19].

Tuttavia, essa implica anche un miglioramento di efficienza energetica, dovuta soprattutto alla riduzione del numero di accessi in memoria per caricare istruzioni ripetute.

La prima generazione di processori vettoriali (o vector processor) comprendeva architetture memory-to-memory [20], nelle quali le istruzioni vettoriali accedono direttamente ai dati vettoriali in memoria primaria, presto soppiantate dalle architetture basate su vector-register-file [21, 22], nelle quali i vettori o loro porzioni vengono trasferiti in una piccola memoria dedicata prima di poter essere elaborati. Ciò riduce ulteriormente gli accessi in memoria primaria, lenti ed energeticamente costosi.

Sul finire degli anni ’80, l’esplosione del mercato dei personal computer e la conseguente disponibilità di microprocessori general-purpose a basso costo provocò il declino dei costosi vector processor per quasi un trentennio, in favore di architetture parallele composte da centinaia o migliaia di nodi basati su processori general-purpose.

Con l’avvento recente degli algoritmi di Intelligenza Artificiale (IA), l’accelerazione hardware è tornata alla ribalta, in quanto nessuna rete di processori general-purpose può reggere il carico computazionale richiesto, sia come velocità di elaborazione sia come efficienza energetica (numero medio di Joule per operazione).

Inoltre, ci si è presto resi conto che moltissimi kernel computazionali di base dell’IA sono costituiti da calcoli vettoriali.

Ora, se da un lato gli acceleratori hardware specificamente dedicati agli algoritmi di IA (es. un acceleratore per la convoluzione 2D) consentono il massimo dell’efficienza nell’eseguire esattamente quegli algoritmi per i quali l’acceleratore è progettato, l’accelerazione dei calcoli vettoriali supportata da un vector processor consente una flessibilità assai maggiore (non solo si può accelerare la convoluzione 2D, ma qualunque algoritmo che elabori matrici e vettori).

Attualmente, quasi tutte le case produttrici di microprocessori sviluppano delle CPU dotate di accelerazione vettoriale, sia per il mercato embedded sia per il mercato HPC.

Da un punto di vista software, i vector processor sono sempre dotati di istruzioni speciali per le operazioni sui vettori. Le istruzioni vettoriali possono essere generate dal compilatore, qualora esso supporti la “automatic vectorization” di codice sorgente generico; oppure sono accessibili al programmatore attraverso “intrinsic functions”, ovvero librerie in codice sorgente (tipicamente in C) che contengono direttamente sezioni di codice assembly facente uso di istruzioni vettoriali.

Da un punto di vista hardware, in linea generale tutti i processori vettoriali sfruttano in maniera estrema due tecniche, spesso ibridate tra loro: il pipelining delle operazioni in numerosi stadi elementari, e l’esecuzione delle operazioni su più elementi dei vettori in modalità SIMD (Single Instruction, Multiple Data).

L’acceleratore vettoriale esegue un’istruzione sui dati vettoriali ogni volta che si presenta nel flusso del programma principale (instruction fetch flow): in tal senso è tecnicamente più corretto il termine co-processore vettoriale che a volte si trova in letteratura. La parte di processore che esegue le istruzioni non vettoriali, prende il nome di core scalare (o super-scalare quando è in grado di eseguire più istruzioni per ciclo di clock). Quando la microarchitettura è progettata in modo tale che il core scalare e il co-processore vettoriale siano esattamente distinti e indipendenti e comunichino attraverso una specifica interfaccia, si parla di architettura de-coupled.

Nel panorama dei processori vettoriali per HPC attualmente sul mercato, la maggior parte supportano vettori di lunghezza massima di 256 o 512 bit.

Fanno parte di questo gruppo i processori Fujitsu A64FX [23], Esperanto ET-SoC1 [24], SiFive Intelligence X280 [25], AndesCore NX27V [26] orientati primariamente al supporto di applicazioni di IA.

Il supercomputer Fugaku basato sui chip A64FX è il numero uno al mondo nella classifica TOP500 [5] e numero 20 nella classifica GREEN500 [6].

Altri vector processor – più orientati ad applicazioni classiche di calcolo scientifico – supportano invece vettori molto più lunghi, fino a 16384 bit e oltre.

Fra questi sono da citare Ara di ETHZ [27], NEC SX-Aurora Tsubasa [28], il co-processore Vitruvius in unione al core scalare Avispado [29]. L’unità vettoriale Vitruvius – attualmente in una fase prototipale nel chip dimostratore EPAC 1.0 [30] – è stata presentata al RISC-V Summit di San Francisco nel Dicembre 2021, e al suo sviluppo contribuisce il laboratorio di sistemi digitali dell’Università Sapienza, membro del Lab Nazionale HPC del CINI, nei progetti europei EPI, eProcessor, ePilot [31]–[33].

Tabella 1 – Caratteristiche dei più recenti processori vettoriali. Ove non diversamente indicato, le prestazioni si riferiscono a operazioni in virgola mobile in doppia precisione

NomeFujitsu A64FXNEC SX-Aurora TsubasaEPAC 1.0 Vitruvius Esperanto

ET-SoC1

(c)

SiFive Intelligence X280 (b) Ara/Ariane

8 lanes

(d)

Instruction set (a)ARM SVE (a)proprietaryRISC-V VRISC-V VRISC-V VRISC-V V
Numero di core vettoriali48104108881
Max lunghezza vettori512 bit16384 bit16384 bit256 bit512 bit32768 bit
Numero registri vettoriali32644032+32n.d.32
Max operazioni/ciclo per core321921616416
Max operazioni/secondo3.3792 x 10123.07 x 10126.4 x 101017.4 x 10122.5 x 10121.9 x 1010
Frequenza di clock2.2 GHz1.6 GHz1 GHz1 GHzn.d.1.17 GHz
Consumo (GFLOPS/Watt)16.915.35n.d.870n.d.40
Tecnologia di fabbricazione7 nm

FinFET

16 nm

FinFET

22 nm

FDSOI

7 nm

FinFET

7 nm

FinFET

22 nm

FDSOI

Open sourceNoNoPrevistoNoNoSi

(a) SVE = ARM Scalable Vector Extension; RISC-V V = RISC-V standard Vector extension

(b) Prestazioni dichiarate per esecuzione MatMul in Mezza Precisione

(c) Prestazioni in Singola Precisione

(d) Non ancora fabbricato

Green computing: i supporti per architetture ottimizzate a precisione ridotta

Un ulteriore meccanismo architetturale per ridurre i consumi energetici è composto dalla specializzazione del formato numerico utilizzato dai processori per svolgere i calcoli. Per poter essere utilizzato efficacemente serve però rivedere il progetto delle unità HW adibite al calcolo ed inoltre introdurre supporto software per rendere trasparente l’uso di queste estensioni HW al programmatore.

TAFFO

TAFFO [34] è un insieme di plugin per LLVM Compiler Framework che consente l’ottimizzazione automatica della precisione.

Nel calcolo ad alte prestazioni, spesso vengono utilizzati formati float larghi (ad esempio il formato IEEE754 double a 64 bit) anche quando una precisione inferiore potrebbe essere impiegata con successo in un punto di prestazione/energia migliore.

TAFFO consente di mettere a punto la selezione dei tipi di dati, tenendo conto del costo della fusione. Può essere accoppiato con una libreria di controllo delle versioni del codice per eseguire dinamicamente l’ottimizzazione, che si è dimostrata un punto chiave nell’affrontare applicazioni su larga scala in cui le caratteristiche dei dati di input possono cambiare nel tempo [35].

libVC

libVC [36] è la libreria di versioning del codice adottata per TAFFO. È stato sviluppato come strumento per supportare l’esplorazione online delle opportunità di specializzazione del codice in uno scenario di ottimizzazione continua in scenari applicativi HPC, nell’ambito del progetto ANTAREX [37], [38]

CppPosits

CppPosits [39, 40] è una libreria sviluppata presso la DII-Università di Pisa, che supporta l’aritmetica a precisione mista e Posits e conforme al compilatore LLVM, per aumentare l’efficienza dei kernel di AI e video computing. CppPosits è stato portato su ARM SVE e RISC-V con estensione Vector ISA, dimostrando che la stessa precisione di FP32 può essere raggiunta riducendo di un fattore 4 il costo di trasferimento e archiviazione dei dati e quindi del consumo energetico associato.

Conclusioni

Quest’articolo descrive le principali problematiche legate all’efficientamento energetico dei sistemi di calcolo ad alte prestazioni che oltre a costituire una fetta del consumo energetico globale sono un limite alle prestazioni degli stessi sistemi e ne limitano lo sviluppo. L’articolo descrive le attività di ricerca svolte dagli autori all’interno di diversi progetti di ricerca europei ed all’interno del Laboratorio Nazionale CINI “High Performance Computing: Key Technologies and Tools” (HPC-KTT) [41].

_______________________________________________________________________________________

Bibliografia

[1] https://www.ansa.it/pressrelease/lifestyle/2020/11/30/italia-piu-smartphone-che-abitanti-il-panorama-digitale-2020_f8f9d1a2-3895-4f87-b9fc-6af8ddaf5c48.html

[2] R. R. Schaller, “Moore’s law: past, present and future,” IEEE Spectr., vol. 34, no. 6, pp. 52–59, Jun. 1997, doi: 10.1109/6.591665.

[3] R. H. Dennard, F. H. Gaensslen, V. L. Rideout, E. Bassous, and A. R. LeBlanc, “Design of ion-implanted MOSFET’s with very small physical dimensions,” IEEE J. Solid-State Circuits, vol. 9, no. 5, pp. 256–268, Oct. 1974, doi: 10.1109/JSSC.1974.1050511.

[4] M. Bohr, “A 30 Year Retrospective on Dennard’s MOSFET Scaling Paper,” IEEE Solid-State Circuits Soc. Newsl., vol. 12, no. 1, pp. 11–13, 2007, doi: 10.1109/N-SSC.2007.4785534.

[5] https://www.top500.org/

[6] https://www.top500.org/lists/green500/

[7] A. Bartolini, C. Conficoni, R. Diversi, A. Tilli, and L. Benini, “Multiscale Thermal Management of Computing Systems – The MULTITHERMAN approach,” IFAC-Pap., vol. 50, no. 1, pp. 6709–6716, Jul. 2017, doi: 10.1016/j.ifacol.2017.08.1168.

[8] G. Bambini et al., “An Open-Source Scalable Thermal and Power Controller for HPC Processors,” in 2020 IEEE 38th International Conference on Computer Design (ICCD), Oct. 2020, pp. 364–367. doi: 10.1109/ICCD50377.2020.00067.

[9] A. Bartolini, R. Diversi, D. Cesarini, and F. Beneventi, “Self-Aware Thermal Management for High-Performance Computing Processors,” IEEE Des. Test, vol. 35, no. 5, pp. 28–35, Oct. 2018, doi: 10.1109/MDAT.2017.2774774.

[8] X. Wu et al., “Toward an End-to-End Auto-tuning Framework in HPC PowerStack,” in 2020 IEEE International Conference on Cluster Computing (CLUSTER), Sep. 2020, pp. 473–483. doi: 10.1109/CLUSTER49012.2020.00068.

[9] D. Cesarini, A. Bartolini, P. Bonfà, C. Cavazzoni, and L. Benini, “COUNTDOWN – three, two, one, low power! A Run-time Library for Energy Saving in MPI Communication Primitives,” ArXiv180607258 Cs, Jun. 2018, Accessed: Dec. 04, 2018. [Online]. Available: http://arxiv.org/abs/1806.07258

[10] R. Schöne, T. Ilsche, M. Bielert, A. Gocht, and D. Hackenberg, “Energy Efficiency Features of the Intel Skylake-SP Processor and Their Impact on Performance,” ArXiv190512468 Cs, May 2019, Accessed: Jun. 09, 2020. [Online]. Available: http://arxiv.org/abs/1905.12468

[11] L. Riha, A. Bartolini, and O. Vysocky, “Fine-grained application tuning on OpenPOWER HPC systems,” Pollack Mihály Faculty of Engineering and Information Technology, University of Pécs, Hungary, p. 33. doi: 10.4203/ccp.112.33.

[12] B. Rountree, D. K. Lownenthal, B. R. de Supinski, M. Schulz, V. W. Freeh, and T. Bletsch, “Adagio: Making DVS Practical for Complex HPC Applications,” in Proceedings of the 23rd International Conference on Supercomputing, New York, NY, USA, 2009, pp. 460–469. doi: 10.1145/1542275.1542340.

[13] F. Fraternali, A. Bartolini, C. Cavazzoni, and L. Benini, “Quantifying the Impact of Variability and Heterogeneity on the Energy Efficiency for a Next-Generation Ultra-Green Supercomputer,” IEEE Trans. Parallel Distrib. Syst., vol. 29, no. 7, pp. 1575–1588, Jul. 2018, doi: 10.1109/TPDS.2017.2766151.

[14] D. Cesarini, A. Bartolini, A. Borghesi, C. Cavazzoni, M. Luisier, and L. Benini, “Countdown Slack: A Run-Time Library to Reduce Energy Footprint in Large-Scale MPI Applications,” IEEE Trans. Parallel Distrib. Syst., vol. 31, no. 11, pp. 2696–2709, Nov. 2020, doi: 10.1109/TPDS.2020.3000418.

[15] D. Cesarini, A. Bartolini, P. Bonfa, C. Cavazzoni, and L. Benini, “COUNTDOWN: a Run-time Library for Performance-Neutral Energy Saving in MPI Applications,” IEEE Trans. Comput., vol. 70, no. 5, pp. 682-695, 1 May 2021, doi: 10.1109/TC.2020.2995269.

[16] G. Agosta, W. Fornaciari, G.Massari, A. Pupykina, F.Reghenzani, and M. Zanella. 2018. “Managing heterogeneous resources in hpc systems”, Proceedings of the 9th Workshop and 7th Workshop on Parallel Programming and RunTime Management Techniques for Manycore Architectures and Design Tools and Architectures for Multicore Embedded Computing Platforms (PARMA-DITAM). 7–12. https://doi.org/10.1145/3183767.318376

[17] G. Bambini et al., “An Open-Source Scalable Thermal and Power Controller for HPC Processors,” in 2020 IEEE 38th International Conference on Computer Design (ICCD), Oct. 2020, pp. 364–367. doi: 10.1109/ICCD50377.2020.00067

[18] https://pulp-platform.org/

[19] Gagliardi, F., Moreto, M., Olivieri, M., Valero, M., The international race towards Exascale in Europe. CCF Trans. HPC 1, 3–13 (2019). https://doi.org/10.1007/s42514-019-00002-y

[20] Watson, W.J.: The TI ASC: A highly modular and flexible super computer architecture. In Proceedings of the December 5–7, 1972, Fall Joint Computer Conference, Part I (AFIPS), pp. 221–228, (1972)

[21] Russell, R.M.: The CRAY-1 computer system. Commun. ACM 21(1), 63–72 (1978)

[22] Cray Research: Cray X-MP Series Model 48 Mainframe Reference Manual. (1984)

[23] https://www.fujitsu.com/global/products/computing/servers/supercomputer/a64fx/

[24] https://www.servethehome.com/esperanto-et-soc-1-1092-risc-v-ai-accelerator-solution-at-hot-chips-33/

[25] https://www.sifive.com/cores/intelligence-x280

[26] https://www.andestech.com/en/products-solutions/andescore-processors/riscv-nx27v/

[27] M. Cavalcante, F. Schuiki, F. Zaruba, M. Schaffner and L. Benini, “Ara: A 1-GHz+ Scalable and Energy-Efficient RISC-V Vector Processor With Multiprecision Floating-Point Support in 22-nm FD-SOI” in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 28, no. 02, pp. 530-543, 2020. doi: 10.1109/TVLSI.2019.2950087

[28] https://www.nec.com/en/global/solutions/hpc/sx/docs/SX_Aurora_TSUBASA_brochure_2020_oct.pdf

[29] O. Palomar, F. Minervini, Vitruvius: An Area-Efficient RISC-V Decoupled Vector Ac… Francesco Minervini & Oscar Palomar Perez, RISC-V Summit 2021, San Francisco, CA, USA, Dec. 2021. Online: https://www.youtube.com/watch?v=tlC5kMhrh-k

[30] https://www.tomshw.it/hardware/lindipendenza-europea-dei-chip-e-sempre-piu-vicina-arrivano-i-primi-sample-risc-v/

[31] https://www.european-processor-initiative.eu/

[32] https://eprocessor.eu/

[33] https://eupilot.eu/

[34] Stefano Cherubin, Daniele Cattaneo, Michele Chiari, Antonio Di Bello, and Giovanni Agosta. 2019. “TAFFO: Tuning assistant for floating to fixed point optimization”, IEEE Embedded Systems Letters 12, 1 (2019), 5–8. https://doi.org/10.1109/ LES.2019.2913774

[35] Stefano Cherubin, Daniele Cattaneo, Michele Chiari, and Giovanni Agosta. 2020, “Dynamic precision autotuning with TAFFO”, ACM Transactions on Architecture and Code Optimization (TACO) 17, 2 (2020), 1–26. https://doi.org/10.1145/3388785

[36] Stefano Cherubin and Giovanni Agosta. 2018, “libVersioningCompiler: An easyto-use library for dynamic generation and invocation of multiple code versions”, SoftwareX 7 (2018), 95 – 100. https://doi.org/10.1016/j.softx.2018.03.006

[37] Cristina Silvano, Giovanni Agosta, Jorge Barbosa, Andrea Bartolini, Andrea R.Beccari, Luca Benini, João Bispo, João M. P. Cardoso, Carlo Cavazzoni, Stefano Cherubin, Radim Cmar, Davide Gadioli, Candida Manelfi, Jan Martinovič, Ricardo Nobre, Gianluca Palermo, Martin Palkovič, Pedro Pinto, Erven Rohou, Nico Sanna, and Katerina Slaninová. 2017. “The ANTAREX tool flow for monitoring and autotuning energy efficient HPC systems”, In 2017 International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation (SAMOS). 308–316. https://doi.org/10.1109/SAMOS.2017.8344645

[38] Cristina Silvano, Giovanni Agosta, Andrea Bartolini, Andrea R Beccari, Luca Benini, João Bispo, Radim Cmar, João MP Cardoso, Carlo Cavazzoni, Jan Martinovič, Gianluca Palermo, Martin Palkovic, Pedro Pinto, Erven Rohou, Nico Sanna, and Katerina Slaninová. 2016. “AutoTuning and Adaptivity appRoach for Energy efficient eXascale HPC systems: the ANTAREX Approach”, In 2016 Design, Automation & Test in Europe Conference & Exhibition (DATE). IEEE, 708–713.

[39] Marco Cococcioni, Federico Rossi, Emanuele Ruffaldi, and Sergio Saponara. 2021. “Novel Arithmetics in Deep Neural Networks Signal Processing for Autonomous Driving: Challenges and Opportunities”. In IEEE Signal Processing Magazine vol 38 n 1. IEEE, 97–110.

[40] M. Cococcioni, F. Rossi, E. Ruffaldi and S. Saponara, “A Lightweight Posit Processing Unit for RISC-V Processors in Deep Neural Network Applications,” in IEEE Transactions on Emerging Topics in Computing, doi: 10.1109/TETC.2021.3120538.

[41] Marco Aldinucci, Giovanni Agosta, Antonio Andreini, Claudio A. Ardagna, Andrea Bartolini, Alessandro Cilardo, Biagio Cosenza, Marco Danelutto, Roberto Esposito, William Fornaciari, Roberto Giorgi, Davide Lengani, Raffaele Montella, Mauro Olivieri, Sergio Saponara, Daniele Simoni, and Massimo Torquati. 2021. “The Italian research on HPC key technologies across EuroHPC”. Proceedings of the 18th ACM International Conference on Computing Frontiers. Association for Computing Machinery, New York, NY, USA, 178–184. DOI: https://doi.org/10.1145/3457388.3458508

WHITEPAPER
Energia rinnovabile: il mercato e il panorama degli incentivi per l’eolico
Sviluppo Sostenibile
Utility/Energy
@RIPRODUZIONE RISERVATA

Articolo 1 di 4