Quantum Computing e HPC in Europa

Quantum Computing e HPC in Europa
 

Da qualche anno, la comunità HPC è chiamata a risolvere una sfida molto difficile. Se da una parte la crescente domanda di risorse computazionali di alto livello da parte di un mondo sempre più digitalizzato è ben compensata dalle altrettanto avanzate competenze di coloro che si occupano di High Performance Computing, dall’altra c’è l’annoso problema dell’evoluzione dei supercalcolatori. Da qualche anno si sta assistendo ad un forte rallentamento nell’evoluzione dei computer classici: l’aumento di potenza si è slegato dal semplice aumento di prestazioni del processore, il fattore discriminante è sempre di più diventato l’utilizzo di più processori in parallelo che collaborano con acceleratori esterni. Il Quantum Computing è un concetto rivoluzionario per il calcolo ad alte prestazioni: si basa sulla realizzazione di un nuovo tipo di calcolatore in grado di sfruttare le leggi della meccanica quantistica per aumentare enormemente la propria potenza di calcolo. Anche se ancora in stato prototipale, questa nuova tecnologia sta già attirando l’attenzione della comunità HPC, che la vede come una possibile soluzione al problema dell’evoluzione dei computer attuali. In questo articolo, dopo avervi brevemente spiegato i concetti di HPC e Quantum Computing, parlerò dello stretto rapporto tra le due tecnologie e l’importanza che esse stesse stanno sempre più acquisendo in Italia e in Europa.

 

Introduzione

Con il termine High Performance Computing (HPC) si intende l’insieme di tecnologie necessarie per l’assemblaggio di supercomputer e per la loro programmazione, per la quale vengono sfruttate avanzate tecniche di parallelizzazione. Per supercomputer, invece, si intende un calcolatore con una potenza di calcolo di diversi ordini maggiore rispetto ai computer che normalmente possiamo trovare sul mercato. Al fine di comprendere meglio quest’ultima informazione, spieghiamo come viene misurata la potenza di un computer: per quantificarla normalmente si utilizza il concetto di FLOPS (“Floating Point Operations Per Second”), unità di misura che registra il numero di operazioni in virgola mobile che un computer può effettuare nell’arco di un secondo; ad esempio, un computer che monta un processore di mercato di fascia intermedia come un Intel(R) Core(TM) i5-5675R CPU @ 3.10GHz può sviluppare una potenza di calcolo media pari a 25.45 GFLOPS (25.45 miliardi di operazioni in virgola mobile al secondo), mentre una macchina equipaggiata con un potente AMD Ryzen Threadripper 3960X 24-Core Processor può arrivare anche a 10 volte tanto (254 GFLOPS).
I supercomputer, per essere definiti tali, devono avere potenze di calcolo superiori di qualche ordine di grandezza rispetto a quelle dei comuni computers. Sfogliando la classifica “Top500”[1], la lista periodicamente aggiornata (e pubblicamente disponibile online) che riporta la potenza di calcolo di tutti i supercomputer del mondo, si legge che ad esempio Summit, il primo classificato, ha una potenza di calcolo media pari a circa 150 PFLOPS, ovvero circa 150 milioni di miliardi di operazioni al secondo. Per poter raggiungere tali impressionanti velocità ogni macchina ha bisogno di utilizzare tutto quello che l’attuale tecnologia mette a disposizione per aumentarne la potenza. Oltre ad aver bisogno di moltissimi processori (si parla, in media, di milioni di cores per ogni macchina, suddivisi in svariati nodi), esso deve essere in grado di sfruttare efficientemente anche tutti i validi acceleratori disponibili sul mercato, come le Graphic Processing Units (GPU). Inoltre, ha bisogno di girare codice scritto utilizzando particolari accorgimenti, che normalmente non rientrano nella pura implementazione di un algoritmo: i programmi scritti per essere eseguiti da un supercomputer devono essere in grado di suddividere e orchestrare il lavoro tra i moltissimi processori, oltre ad essere in grado di accedere e sfruttare eventuali acceleratori presenti sulla macchina, in modo da poter veramente utilizzare appieno tutta la potenza di calcolo disponibile.
Il ruolo di un programmatore HPC è proprio questo, permettere ad un codice di sfruttare al meglio la potenza delle macchine, in modo da riuscire a compiere i propri calcoli nel più breve tempo possibile. Negli ultimi 70 anni l’HPC è diventato sempre più parte integrante delle realtà aziendali e universitarie del mondo intero: l’introduzione del calcolo parallelo ha reso possibile l’esecuzione di simulazioni che fino a poco tempo prima risultavano semplicemente impensabili. Oggi l’HPC è una realtà insostituibile nel panorama scientifico mondiale; oltre alla presenza sul terreno mondiale di diversi centri di supercalcolo a livello nazionale anche moltissime aziende private hanno istituito dei rami di ricerca HPC. Basti pensare, come esempio, alla gigantesca mole di ore calcolo utilizzate dalle case farmaceutiche (e ancora in utilizzo) per cercare una cura contro il coronavirus. La simulazione computazionale dell’interazione tra molecole, infatti, oltre a rappresentare uno strumento ormai insostituibile in mano alla ricerca medica rappresenta anche un problema computazionale molto difficile da risolvere in tempi sufficientemente rapidi. 

 

L’HPC in Italia e la legge di Moore

In Italia l’HPC è gestito da diversi centri di supercalcolo e da molte aziende, esattamente come accade nel resto del mondo. In particolare, vale la pena menzionare CINECA[2], consorzio inter-universitario italiano con sede nel bolognese, che oltre ad occuparsi di programmazione HPC gestisce e mantiene il più potente supercomputer pubblico italiano, Marconi (vedi figura 1), recentemente aggiornato con partizioni dotate di NVIDIA Volta V100GPUs[3].
CINECA si occupa di fornire soluzioni HPC alle industrie e alle università italiane da più di 50 anni, offrendo ore calcolo su supercomputer aggiornati periodicamente (la cui potenza è sempre stata testimoniata dalla costante presenza delle macchine CINECA nei primi posti nella lista Top500) e personale altamente qualificato, in grado di guidare l’utente sia nella conversione del suo codice, ottimizzandolo per l’utilizzo sulle macchine HPC, sia di mantenere un supporto attivo per tutta la durata dei progetti intrapresi.

 

Figura 1 - Il supercomputer "Marconi", primo computer pubblico italiano e cuore pulsante dell'HPC in CINECA.

Sin dalla sua fondazione, il consorzio CINECA si è sempre impegnato per fornire ai suoi utenti le soluzioni HPC più all’avanguardia, collaborando sia con lo Stato Italiano sia con la Comunità Europea, partecipando attivamente a tutte le iniziative su tema. Sappiamo bene che per continuare a soddisfare le esigenze computazionali della comunità HPC è sempre più necessario rivolgere lo sguardo alle nuove tecnologie che in qualche modo riescono ad aumentare la potenza di calcolo degli attuali supercalcolatori, accelerandone le prestazioni. Tale accorgimento, una volta praticamente impensabile, è ormai diventato necessario: nel corso degli anni, infatti, si è assistito ad un forte rallentamento dell’aumento della potenza computazionale prodotta dall’industria dei supercomputer. Qualche decina di anni fa il mondo dell’HPC poteva fare affidamento sulle previsioni di crescita conosciute con il nome di “legge di Moore”[4]: tale legge affermava, empiricamente, che la potenza di calcolo dei computer sarebbe raddoppiata ogni anno e mezzo. Le previsioni di Moore si rivelarono esatte per un lungo periodo dell’evoluzione dei calcolatori classici.
All’inizio del nuovo millennio, però, le maggiori case produttrici di processori si resero conto di aver raggiunto un limite fisico nella realizzazione di CPU sempre più potenti. Tale limite, che riguarda la miniaturizzazione dei circuiti, risulta ancora oggi molto difficile da superare; questo fenomeno ha sancito un inevitabile rallentamento nell’evoluzione della potenza computazionale, rendendo obsoleta la legge di Moore. Per ovviare ai limiti di costruzione delle CPU, vennero prese in considerazione diverse idee. Inizialmente nacque il concetto di multicore e di calcolo parallelo: ovvero cercare di superare il limite fisico imposto alla realizzazione di nuove CPU creando dei sistemi di elaborazione composti da molti processori che lavorano insieme. Questo approccio, ancora oggi utilizzato, nasce nei primi anni del 2000: esso inizialmente riuscì a compensare la perdita di potenza delle singole CPU, trainando ancora una volta il grafico della potenza computazionale a disposizione dell’HPC verso l’alto, senza però riuscire a dare nuova vita alla legge di Moore.
Al contrario, le CPU lavorano uti­lizzando più unità di elaborazione in parallelo (i “core”) per applica­re istruzioni diverse su dati diver­si (“MIMD” - multiple instructions, multiple data): un moderno proces­sore può eseguire programmi come i “socket server” che gestiscono contemporaneamente sessioni con più client.
Verso la metà degli anni 2000 na­scono le GPGPU (General Purpose GPU) quando le GPU vengono im­piegate per accelerare operazioni che non hanno nulla a che fare con il rendering video, sfruttando l’e­stremo parallelismo dell’architettu­ra hardware applicato ad operazioni computazionalmente onerose, tipi­che ad esempio dell’algebra delle matrici.
Oggi non è possibile pensare ad ap­plicazioni di intelligenza artificiale senza l’impiego delle GPU per l’ad­destramento dei modelli di machine learning (Box approfondimento: Ac­celeratori hardware e AI) basato su enormi quantità di dati. Ma ci sono anche altri settori che si basano sull’utilizzo delle GPU, ad esempio i database, la biologia (studio dei P systems), la medicina (ricostruzione delle immagini delle scansioni).
Allo stesso tempo, questi algorit­mi facilmente parallelizzabili sono spesso gli unici che possono sfrutta­re in modo efficiente l’elevatissimo parallelismo delle GPU, e quindi gli unici che oggi possono “scalare” traendo ancora vantaggio come un tempo dall’aumento del numero di transistor per chip.
Tutto questo è stato reso possibile dallo sviluppo di linguaggi di pro­grammazione (ad esempio OpenCL) e ambienti di sviluppo come CUDA (Compute Unified Device Architec­ture) che consentono di sfrutta­re il parallelismo insito della GPU: OpenCL consente al programma­tore di continuare a scrivere codice in maniera sequenziale ma andan­do ad individuare alcune porzioni (i kernel), che poi vengono automati­camente replicate su molte, anche migliaia, unità di elaborazione con­temporaneamente.
Ad esempio, le singole iterazioni di un ciclo (loop), se indipendenti l’una dall’altra (come nel caso ad esem­pio del calcolo matriciale), possono essere gestite come kernel ed esse­re eseguite in parallelo (unrolling).  

 

Il Quantum Computing

La nascita dell’idea di computer quantistico è attribuita ad una famosa frase del professor Feynman, fisico statunitense, il quale nel 1982 disse:
Nature isn't classical, dammit, and if you want to make a simulation of nature, you'd better make it quantum mechanical, and by golly it's a wonderful problem, because it doesn't look so easy”.
In sostanza, Feynman immaginava un nuovo concetto di calcolatore[5], in grado di simulare le interazioni fisiche tra particelle manipolando unità logiche di informazione di base quantistiche, anziché macroscopiche. Il bit, l’unità logica di base del computer classico, costituito sostanzialmente da un flusso di corrente che lo rende acceso o spento, doveva essere sostituito con un’entità atomica in grado di manifestare stati normalmente impossibili, “vie di mezzo” tra l’acceso e lo spento, generabili grazie allo sfruttamento del principio di sovrapposizione quantistica.
La caratteristica chiave di questa nuova unità logica di base, detta qubit, è proprio quella di poter assumere infiniti stati di sovrapposizione tra l’acceso e lo spento, rendendo possibili operazioni intrinsecamente parallele irrealizzabili utilizzando le architetture dei computer classici (vedi figura 2). Nel 1982 l’idea di Feynman era un’idea destinata a rimanere sulla carta: molti scienziati, però, animati da uno spirito pionieristico e visionario, credettero sin da subito nel nuovo futuristico calcolatore, dando vita molto precocemente alla branca che oggi è conosciuta come Quantum Computing.

 

Figura 2 - La sfera di Bloch, "mondo matematico" dove vivono i qubit. Si noti come i poli siano costituiti dagli stati classici 0 e 1.

È proprio lo studio precoce del quantum computing che ha attirato sin da subito l’attenzione di moltissimi scienziati: la possibilità di poter sfruttare a proprio vantaggio i comportamenti quantistici dei qubit si dimostrò un potentissimo mezzo a disposizione degli scienziati. Ci si rese immediatamente conto che gli algoritmi scritti con questo nuovo approccio, spesso e volentieri, superavano di gran lunga le controparti classiche, dando vita a nuovi metodi molto più efficienti e rapidi. Tutto il lavoro svolto prima della comparsa dei primi computer quantistici ha generato una gran moltitudine di algoritmi quantistici pronti per essere usati, che aspettano solo un computer sufficientemente evoluto per poterli implementare. 
I primi prototipi funzionanti di computer quantistico comparvero nei primi anni 2000 ma ci vollero almeno 10 anni per realizzare dei calcolatori effettivamente programmabili ed utilizzabili. Nel frattempo, molte grandi case produttrici come IBM, Google e Microsoft, deviarono parte della loro ricerca scientifica per la realizzazione di computer quantistici sempre più potenti; contemporaneamente, in giro per il mondo nacquero start-up con lo stesso scopo, come D-Wave o Rigetti. Ad oggi, inizio 2020, possiamo affermare che lo stato dell’arte dei computer quantistici è un passo sopra al livello di prototipo, ma non ancora sufficientemente evoluto per rappresentare una vera e propria rivoluzione nel campo dell’HPC. Le ridotte dimensioni dei chipset e le tecnologie di realizzazione ancora un po’ acerbe non permettono alle macchine attualmente disponibili sul mercato di implementare i complessi algoritmi pensati anni prima al pieno delle loro potenzialità, seppur siano perfettamente in grado di dimostrare di poterlo fare in piccolo (al massimo delle loro attuali capacità computazionali). Eppure, come dimostrato recentemente da un esperimento condotto da Google, è già possibile realizzare computer quantistici in grado di dimostrare la cosidetta “supremazia quantistica”, seppur limitatamente ad uno specifico algoritmo di campionamento. Secondo alcune proiezioni fatte da tecnici e scienziati vicini all’argomento, potremo osservare nuovamente evidenze di supremazia quantistica applicata ad algoritmi di uso comune tra poco, ovvero quando i computer quantistici avranno rotto la barriera dei 100 qubit. Si stima, infatti, che superata tale soglia i computer saranno in grado di implementare un’intera categoria di algoritmi quantistici, soprattutto riguardanti simulazioni chimiche, cominciando ad ottenere risultati ineguagliabili dai supercomputer attuali.
Anche se la tecnologia quantistica attuale è ancora lontana dal computer universale, è pericoloso e controproducente aspettare di vederla evolvere per iniziare a tenerla in considerazione. Questo per diversi motivi: come prima cosa, le conoscenze per utilizzare un computer di questa nuova generazione sono tutt’altro che scontate; i computer quantistici seguono logiche completamente diverse, per poterli utilizzare al meglio è necessario conoscere il quantum computing. In secondo luogo, anche al livello attuale i computer quantistici potranno presto essere sfruttati per migliorare la potenza computazionale dei supercomputer attuali. Al momento, infatti, stiamo per entrare nella fase dei “NISQ” Computers[6]: per NISQ Computers (Noisy Intermediate-Scale Quantum), si intendono computer quantistici di modeste dimensioni, con tecnologie di realizzazione qubits non proprio perfette, ma comunque in grado di compiere calcoli molto complessi per computer digitali, anche se limitati dalla rumorosità e dalle dimensioni del chipset.
Menti lungimiranti, hanno già previsto la possibilità di utilizzare i computer quantistici di prossima generazione come acceleratori per i supercomputer, affiancando la QPU (Quantum Processing Unit) alle già presenti CPU e GPU al fine di ottimizzare le prestazioni totali.

 

HPC e Quantum Computing in Europa

Anche se lo stato dell’arte delle tecnologie quantistiche non permette ancora applicazioni a livello industriale, il loro immenso potenziale e la necessità di familiarizzare sin da subito con quella che è a tutti gli effetti una rivoluzione nel campo dell’HPC hanno spinto l’Europa, al pari di molti altri governi mondiali, ad intraprendere sin da subito ingenti azioni di finanziamento. Il 17 maggio 2016 è stato annunciato dalla comunità europea nell’ambito del Programma Quadro di ricerca Horizon 2020 il lancio della nuova FET Flagship in Quantum Technologies[7], ovvero un programma di ricerca decennale finanziato con 1.3 miliardi di euro che vede il coinvolgimento di tutti gli Stati Membri al fine di creare un network europeo quantistico in grado di padroneggiare ogni aspetto delle nuove tecnologie emergenti, dalla loro costruzione al loro utilizzo. Nell’ambito della Quantum Flagship, partita ufficialmente due anni dopo, il 29 ottobre 2018 (in occasione di un congresso tenutosi a Vienna), sono stati finanziati moltissimi progetti.
Gli autori del Quantum Manifesto[8], ovvero il whitepaper che ha dato il via all’iniziativa della Quantum Flagship, identificano 5 aree di ricerca “Quantum” di interesse per la comunità europea: Communication, Computation, Simulation, Metrology e Basic Science. Quest’ultima, che racchiude lo sviluppo di tutta la matematica che sta alla base di qualsiasi implementazione, è vista come un pilastro fondamentale su cui tutte le altre scienze si basano (vedi figura 3).

 

Figura 3 - I "5 pilastri" della Quantum Flagship europea. Si noti come il tema della Basic Science sia volutamente posto come fondamenta di tutte le altre aree di ricerca di interesse. Immagine presa dal Quantum Manifesto

Dopo una prima fase preliminare di due anni (2016-2018), La “ramp-up phase” della Quantum Flagship (2018-2020) ha previsto un investimento iniziale di 132 milioni di euro (Flagship Research and Innovation Actions) da suddividere per circa 20 progetti approvati (su circa 140 valutati). I 20 progetti approvati sono così suddivisi: 7 progetti di ricerca di base, 4 nell’ambito dei sensori quantistici (e metrologia), 4 progetti sulla comunicazione quantistica, 2 per la simulazione quantistica ed infine 2 nell’ambito del quantum computing. Ora stiamo per entrare nella cosidetta “Full Implementation Phase”, dove si prevede il finanziamento di ulteriori progetti operativi, sfruttando la maggiore potenza computazionale quantistica a disposizione (in particolare la realizzazione dei primi computer quantistici NISQ, in grado di poter essere davvero affiancati a dei supercomputer per svolgere in particolare simulazioni di chimica computazionale in maniera più efficiente rispetto ai calcolatori classici).
Il progetto della Quantum Flagship fa parte di una visione di insieme più grande, che da qualche anno la comunità europea sta cercando di perseguire. Uno dei grandi problemi che l’Europa sta cercando di risolvere nel campo dell’HPC è quello dell’indipendenza tecnologia: se da una parte è vero che la comunità HPC europea può contare su diversi supercomputer e su una ampia schiera di centri di calcolo ben nutriti di competenze specifiche, è anche vero che la costruzione dei supercalcolatori è spesso affidata ad aziende extraeuropee, in particolare cinesi o americane.
La fondazione “EuroHPC Joint Undertaking”[9], divenuta operativa il 6 novembre 2018, nasce come azione di partnership tra soggetti pubblici e privati, raccogliendo risorse dagli Stati Membri e dagli stakeholders impegnati nell’ambito del programma europeo Horizon 2020 al fine di realizzare un’infrastruttura di high performance computing completamente europea.
La fondazione vuole approfittare della corsa all’Exascale (ovvero la corsa alla realizzazione di un supercomputer in grado di raggiungere una potenza computazionale misurabile in ExaFLOPS) per finanziare progetti europei in grado di realizzare tali tecnologie. Già nel giugno del 2019 EuroHPC ha selezionato 8 siti adeguati per accogliere un supercomputer “pre-exascale”, ovvero la generazione immediatamente precedente ai computer exascale; tra i siti selezionati vale la pena menzionare il sito italiano, identificato nel CINECA, che gestirà un supercomputer da 240 milioni di euro chiamato Leonardo.
Quest’ultimo, una volta connesso con gli altri supercomputer della rete, darà vita alla base del network HPC europeo, il quale verrà poi man mano implementato con ulteriori infrastrutture. È proprio in quest’ottica che il futuro dell’HPC europeo e il futuro delle tecnologie quantistiche si intersecano: la rete europea costituita dagli otto supercomputer pre-exascale potrà disporre, nel prossimo futuro, anche di risorse computazionali quantistiche da integrare alle proprie. Altro obiettivo della comunità europea è anche quello di estendere il concetto di indipendenza tecnologica anche alla nascente industria della costruzione di computer quantistici: per questo si vuole si da subito includere la realizzazione di una rete di computer quantistici sparsi per l’europa in connessione alla rete HPC.
Il progetto, che fa parte della call EuroHPC 2020, precisamente denominato “EuroHPC-2020-01-b: Pilot on quantum simulator”,  partirà già quest’anno: la call prevede l’installazione di un primo computer quantistico in un centro di calcolo europeo, la sua connessione ad un supercomputer di ultima generazione e l’istituzione di una task force di esperti in grado di gestire la nuova rete e di formare altro personale a farlo.

 

Figura 4 - Timeline delle fasi della Quantum Flagship.

In Italia il CINECA ha cominciato a monitorare l’evoluzione del nuovo panorama HPC mondiale in concomitanza con le iniziative europee, istituendo un team responsabile del monitoraggio e dello studio delle nuove tecnologie quantistiche. Nel corso degli anni, dopo aver collaborato con industrie e università italiane su ricerche relative al quantum computing, il team di quantum computing del CINECA ha consolidato le proprie conoscenze sul tema, rendendo il centro di calcolo perfettamente allineato con gli sviluppi europei della nuova tecnologia.
Oltre ad aver fornito consulenza specialistica e supporto tecnico CINECA ha anche organizzato eventi di divulgazione annuale a tema “Quantum Computing and HPC”, che hanno raccolto un grande successo in tutte le edizioni. Ormai la connessione tra quantum computing e HPC si sta facendo sempre più chiara agli occhi di tutta la comunità europea: conformemente alla sua missione nel campo dell’HPC, dal punto di vista quantum lo scopo del CINECA è quello di fornire mezzi, competenze e formazione per aiutare industrie e enti di ricerca italiani ad affrontare serenamente quest’imminente seconda rivoluzione quantistica.

 

Bibliografia

[1] https://www.top500.org/
Top500 list

[2] https://www.cineca.it/
CINECA

[3] http://www.hpc.cineca.it/content/hardware
Infrastruttura HPC CINECA

[4] Cramming more components onto integrated circuits
Gordon E. Moore,Electronics, Volume 38, Number 8, April 19, 1965

[5] Simulating physics with computers
Richard P. Feynman
International Journal of Theoretical Physics volume 21, pages467–488(1982)

[6] Quantum Computing in the NISQ era and beyond
John Preskill
Institute for Quantum Information and Matter and Walter Burke Institute for Theoretical Physics, California Institute of Technology, Pasadena CA 91125, USA
30 July 2018

[7] Quantum Flagship
https://qt.eu/

[8] Quantum Manifesto
Whitepaper
https://qt.eu/app/uploads/2018/04/93056_Quantum-Manifesto_WEB.pdf

[9] EuroHPC JU website
https://eurohpc-ju.europa.eu/