Introduzione
Benvenuto alla Frontiera​
Nel corso della storia, la nostra comprensione scientifica del mondo è cresciuta rapidamente ogni volta che nuovi strumenti sono diventati disponibili – strumenti che ci hanno permesso di formulare nuove domande, condurre esperimenti su scala più ampia e aprire nuove aree di ricerca. Tra questi strumenti figurano il telescopio, il microscopio e il Large Hadron Collider. Ognuno di essi ha aperto la strada a nuove tipologie di scoperte scientifiche. Negli anni Sessanta abbiamo assistito anche allo sviluppo dell'high-performance computing (HPC), che è diventato uno strumento fondamentale per risolvere compiti computazionali complessi, incluse molte importanti sfide scientifiche.
Oggi disponiamo di un altro strumento importante per il progresso scientifico: i computer quantistici. Pur essendo ancora una tecnologia emergente, i computer quantistici hanno il potenziale per cambiare significativamente il tipo di problemi computazionali che siamo in grado di risolvere in modo efficiente. Questo corso esplora come queste tecnologie, lavorando insieme, possano espandere i confini di ciò che è computazionalmente possibile.
La nostra missione è chiara ma ambiziosa: fornirti le conoscenze concettuali e pratiche necessarie per utilizzare queste tecnologie e affrontare alcuni dei problemi più difficili del mondo.
Questo video descrive gli obiettivi di questo corso e la motivazione che sta alla base della combinazione di HPC e quantum computing.
HPC​
Che cos'è esattamente l'high-performance computing? L'HPC è diventato la base per la risoluzione dei moderni problemi computazionali. Non viviamo più in un'epoca in cui i problemi avanzati possono essere risolti con strumenti semplici come l'abaco o carta e penna; lavoriamo invece con domande e dataset che richiedono un'enorme potenza di calcolo.
Il campo dell'high-performance computing affonda le sue radici nello sviluppo dei primi supercomputer negli anni Sessanta. Si trattava di macchine progettate appositamente per risolvere problemi scientifici e ingegneristici su larga scala in modo più rapido rispetto ai computer convenzionali.
Uno dei primi supercomputer ben noti fu il CDC 6600 (1964), costruito da Seymour Cray, spesso definito il padre del supercomputing. Il CDC 6600 era il computer più veloce della sua epoca, grazie a un'architettura innovativa che includeva unità funzionali parallele e il pipelining — concetti ancora impiegati nell'HPC odierno.
Cray continuò a far avanzare il campo con il Cray-1 (1976), che introdusse il vector processing — una tecnica che aumentò notevolmente la velocità delle operazioni su grandi array di dati, rendendolo particolarmente adatto al calcolo scientifico.
Man mano che le velocità dei singoli processori cominciarono a stabilizzarsi, l'HPC si evolse verso il parallel computing — ovvero l'utilizzo di molti processori che lavorano insieme su parti diverse di un problema. Durante gli anni Ottanta e Novanta, le architetture parallele divennero comuni nell'HPC. All'inizio degli anni Duemila, l'HPC si spostò verso cluster di hardware commodity, cioè server ordinari collegati da reti ad alta velocità . Questo cambiamento rese il supercomputing più accessibile e ampliò il numero di utenti dell'HPC.
Nel corso di questa evoluzione, IBM® è stata in prima linea nella ricerca e nell'implementazione HPC. In particolare, i supercomputer IBM Blue Gene rappresentarono una delle famiglie di supercomputer più influenti degli anni Duemila e dell'inizio degli anni Duemiladieci. Fu un'era di enorme crescita nei sistemi massivamente paralleli, di cui Blue Gene/Q è un esempio, con un'istanza (Sequoia) da 100.000 nodi. Il Summit di Oak Ridge, costruito da IBM, fu la prima risorsa HPC a raggiungere ExaOPS (1,88 in precisione mista) nel 2018.
Oggi ci troviamo nell'era exascale, in cui i supercomputer possono eseguire operazioni al secondo (exaflops). Il primo supercomputer in grado di raggiungere questo traguardo fu Frontier, situato presso il Oak Ridge National Laboratory.
Perché abbiamo bisogno di risorse di calcolo così potenti? Esistono problemi critici per il benessere umano che richiedono risorse estreme per essere modellati o risolti. Tra gli esempi figurano i modelli climatici, lo studio della struttura e del movimento del mantello terrestre, e le simulazioni di fluidodinamica.
Molti problemi di questo tipo sono stati affrontati da ricercatori IBM e collaboratori che lavorano su sistemi IBM. Questa leadership duratura è stata ampiamente riconosciuta. Ad esempio, i ricercatori IBM hanno vinto il Gordon Bell Prize sei volte.[1]
L'HPC è un dominio molto attivo in cui i confini vengono superati regolarmente. Per una panoramica delle capacità moderne, consulta questa lista dei 500 supercomputer più potenti.
Quantum computing​
Il quantum computing è un nuovo paradigma computazionale che non si limita a seguire lo sviluppo graduale dei computer classici. Mira a sfruttare le proprietà quantistiche della sovrapposizione, dell'entanglement e dell'interferenza quantistica per risolvere problemi che sarebbero intrattabili per i soli computer classici. In questo corso non approfondiremo i dettagli dell'unicità del quantum computing — per saperne di più, consulta Fundamentals of quantum information — ma discuteremo invece come la combinazione di queste due infrastrutture potrebbe portare a importanti scoperte nella scienza applicata.
Un approccio ibrido​
La cosa più importante da sottolineare è che questi due paradigmi computazionali non sono in competizione. Siamo in un'era in cui i flussi di lavoro ottimizzati richiedono che i due paradigmi si complementino a vicenda, assegnando ogni compito alla risorsa che lo gestisce più efficacemente. I computer quantistici non sostituiranno i sistemi classici; piuttosto, il futuro della scienza computazionale dipenderà sempre più da flussi di lavoro ibridi in cui l'HPC fornisce un'elaborazione classica ad alte prestazioni e il quantum computing contribuisce con capacità uniche. Come professionista, ricercatore o tecnologo, capire come combinare questi strumenti ti posizionerà come protagonista nella prossima era del progresso scientifico e tecnologico.
Esamineremo come il quantum computing e l'HPC siano posizionati per abilitare scoperte in un'ampia gamma di settori, tra cui:
-
Chimica: Accelerare l'identificazione di nuovi farmaci e materiali.
-
Energia: Progettare catalizzatori, batterie e soluzioni di energia pulita migliorate.
-
Finanza: Modellare il rischio, ottimizzare i portafogli e sviluppare nuovi strumenti finanziari.
-
IA & Machine Learning: Migliorare l'addestramento dei modelli, l'ottimizzazione e l'analisi dei dati.
Perché andiamo oltre il classico​
Gli esseri umani hanno ottenuto notevoli risultati nelle aree applicative sopra citate grazie all'HPC. Tuttavia, anche i supercomputer più veloci del mondo incontrano difficoltà quando i problemi scalano in modo fattoriale o esponenziale con la dimensione del problema. Ad esempio, elencare ogni possibile disposizione di 50 particelle all'interno di una molecola complessa produce configurazioni che crescono almeno in modo fattoriale, richiedendo più memoria di quanta tutti i data center della Terra messi insieme potrebbero fornire.
Un altro esempio è la pianificazione di un percorso di consegna per 10.000 città : il numero di percorsi possibili diventa così grande che, anche se ogni computer mai costruito testasse un percorso al microsecondo, il calcolo richiederebbe un tempo di ordini di grandezza superiore all'età attuale del nostro Sole. Questi totali non sono semplicemente grandi; crescono esponenzialmente, il che significa che ogni particella o città aggiuntiva moltiplica il carico computazionale ben oltre una semplice scalatura.
Potremmo continuare ad aggiungere GPU, ma la manipolazione di quantità così enormi di dati consuma già megawatt di energia e richiede strutture grandi come magazzini. A un certo punto, l'hardware classico non può scalare ulteriormente in modo pratico o conveniente. Ecco perché i ricercatori si stanno rivolgendo ai processori quantistici, che memorizzano le informazioni in sovrapposizioni e a volte possono affrontare direttamente questi problemi di crescita esponenziale, risolvendo casi specifici che le macchine classiche non riescono a completare in alcun lasso di tempo ragionevole.
L'HPC raggiunge alla fine limiti fondamentali dettati dalla combinatoria e dalla termodinamica. Il quantum computing non elimina quei limiti, ma in certi scenari molto specifici può aggirarli.
Perché non solo il quantum?​
Se il quantum computing può aggirare alcuni limiti del calcolo classico, perché non affidarsi interamente ai computer quantistici? Il primo motivo, e il più ovvio, è che i computer quantistici richiedono ancora macchine classiche per funzionare. Compiti come la compilazione e l'invio di circuiti al processore quantistico, la memorizzazione dei risultati di misurazione e l'esecuzione dell'elaborazione post-elaborazione di base sono tutti eseguiti da sistemi di calcolo classici.
Perché abbiamo quindi bisogno anche dell'high-performance computing? Ci sono diverse ragioni. Molte applicazioni attuali e previste del quantum computing affrontano problemi con spazi di ricerca estremamente ampi. Gli algoritmi quantistici spesso riescono a ridurre significativamente le dimensioni di questo spazio, ma in pratica il problema rimanente potrebbe essere comunque abbastanza grande da beneficiare delle risorse HPC. Inoltre, esistono algoritmi che bilanciano i punti di forza dell'HPC e del quantum computing, delegando una parte sufficiente del lavoro all'HPC per rendere l'algoritmo complessivo più robusto contro gli effetti del rumore quantistico.
Un esempio concreto è l'algoritmo di diagonalizzazione quantistica basata su campioni (SQD). Questo algoritmo, che verrà esplorato nella Lezione 4, dimostra come HPC e quantum computing possano complementarsi a vicenda in pratica. Per ulteriori informazioni di base, consulta il corso Quantum Diagonalization Algorithms su IBM Quantum Learning.
Preparazione consigliata​
Questo corso è pensato per professionisti e studenti che lavorano — o prevedono di lavorare — a stretto contatto con infrastrutture di high-performance computing (HPC) e/o quantum computing. Con il rapido progresso delle tecnologie quantistiche, prevediamo un futuro prossimo in cui i processori quantistici verranno integrati insieme alle tradizionali risorse HPC per ottenere risultati più accurati e abilitare nuovi approcci alla risoluzione dei problemi. Questo corso è pensato per chi vuole capire come costruire ed eseguire tali flussi di lavoro ibridi.
Poiché i partecipanti possono provenire da contesti diversi, ci aspettiamo due principali tipologie di studenti: chi ha già esperienza in HPC ma è alle prime armi con il quantum computing, e chi ha esperienza nel quantum computing ma è nuovo all'HPC. Per aiutare tutti a trarre il massimo da questo corso, forniamo di seguito raccomandazioni di preparazione per entrambi i gruppi.
Per chi è nuovo all'HPC​
Questo corso presuppone la familiarità con i concetti fondamentali dell'HPC, come la programmazione a memoria distribuita, il message passing, i modelli di programmazione parallela e la gestione delle risorse. Utilizzeremo anche strumenti come il workload manager Slurm. Sebbene molti di questi concetti vengano introdotti brevemente quando necessario, avere una precedente esposizione renderà il materiale più accessibile. Risorse utili includono:
- HPC Wiki: Una pagina con definizioni e approcci nell'high-performance computing.
- Pagina Wikipedia di Slurm: Fornisce una breve panoramica e note sulla sua ampia adozione.
- Pagina di avvio rapido di Slurm: Alcune informazioni di base, note per iniziare e un elenco dei comandi Slurm di base.
- Tutorial MPI: Un Hello World di base usando MPI.
Risorse aggiuntive sono disponibili anche in questo repository GitHub.
Per chi è nuovo al quantum​
Questo corso farà uso di strumenti e concetti fondamentali del quantum computing con una revisione introduttiva minima. Raccomandiamo che i partecipanti abbiano almeno una conoscenza operativa di Qiskit, familiarità con i gate e i circuiti quantistici, e qualche esposizione agli algoritmi basati su campionamento. Le risorse elencate di seguito dovrebbero fornire una preparazione utile.
- Guida a IBM Quantum® Composer: Una guida dettagliata di Composer, uno strumento grafico di programmazione quantistica che ti permette di trascinare e rilasciare operazioni per costruire circuiti quantistici ed eseguirli su hardware quantistico.
- Introduzione a Qiskit: Un insieme di guide per aiutarti a installare e configurare Qiskit.
- Hello world: Un breve tutorial su Qiskit in cui configuri ed esegui il tuo primo programma quantistico.
- Algoritmi di diagonalizzazione quantistica: Un corso che tratta diversi tipi di algoritmi quantistici, tra cui SQD che verrà utilizzato in questo corso.
Risorse aggiuntive sono disponibili anche in questo repository GitHub.
Chi proviene da qualsiasi background potrebbe trovare utile questa guida; riguarda il plugin SPANK per la gestione delle risorse quantistiche e alcune note su Slurm.
Ci sono alcuni modi in cui l'unicità del quantum computing lo rende proceduralmente diverso dalle risorse di calcolo classiche in modi rilevanti per questo corso. Ad esempio, non esiste un buon analogo quantistico della RAM. Le informazioni vengono memorizzate ed elaborate negli stati dei qubit stessi. Sebbene le misurazioni possano consentire di registrare classicamente alcune caratteristiche dei qubit, tali misurazioni distruggono gran parte della ricchezza dello stato quantistico, compresa la sovrapposizione e l'entanglement. Inoltre, le risorse di quantum computing non sono attualmente ospitate sullo stesso nodo di altre risorse HPC, e gli utenti di risorse quantistiche spesso non avranno lo stesso livello di controllo sulla schedulazione che potrebbero avere sulle risorse HPC classiche. Queste realtà verranno ribadite nelle lezioni appropriate. Ma il messaggio da portare con sé è che i computer quantistici cambieranno il mondo e devono essere integrati con l'HPC, ma non sono "semplicemente un'altra" risorsa HPC che può essere controllata e utilizzata allo stesso modo di CPU, GPU, ecc. I computer quantistici cambiano il modo in cui possiamo affrontare molti problemi di calcolo.
Informazioni su questo corso​
Al termine di questo corso, sarai in grado di fare molto più che ripetere termini tecnici — capirai come gestire un moderno flusso di lavoro ibrido che assegna sotto-task specifiche a un processore quantistico mentre CPU e GPU gestiscono il lavoro rimanente. Imparerai a scrivere script per job che transitano in modo fluido tra nodi classici e QPU, a interpretare i risultati con precisione e a riconoscere dove l'accelerazione quantistica può davvero migliorare i calcoli (e dove non può). Altrettanto importante, eserciterai il mantenimento di una mentalità orientata alla crescita: in un campo nuovo e in rapida evoluzione, nessuno impara tutto in una volta, e il vero progresso deriva dall'iterare, sperimentare e fare domande. Questo corso è suddiviso in 5 capitoli, che coprono i seguenti argomenti:
Programma del corso​
- Lezione 1 - Questa lezione ha trattato il contesto e la motivazione
- Lezione 2 - Risorse di calcolo e la loro gestione
- Lezione 3 - Modelli di programmazione che includono ambienti di calcolo eterogenei
- Lezione 4 - Algoritmi quantistici per flussi di lavoro ibridi, in particolare SQD
- Lezione 5 - Prospettive e direzioni future
Considera questo corso come il tuo trampolino di lancio — il luogo in cui costruisci gli strumenti mentali e la fiducia in te stesso per esplorare la frontiera quantistico-classica ben oltre il completamento dell'ultima lezione.