In letteratura si trovano diversi articoli scientifici e papers che approfondiscono le peculiarità, spesso enfatizzandone le potenzialità, della tecnologia basata sui computer quantistici, mentre in pochi si sono occupati di come debba cambiare la progettazione del software per sviluppare sistemi che un giorno utilizzeranno l’hardware quantistico.
Introduciamo, brevemente, la definizione di computer quantistico e le opportunità attese per, poi, soffermarci sulle sfide che, probabilmente, affronteranno gli architetti del software nel momento in cui integreranno dei componenti quantistici nei loro sistemi.
Evoluzione dell’architettura del software
Negli anni ‘90 abbiamo assistito alla distinzione della disciplina riguardante l’architettura software da quella dell’hardware. Ciò ha consentito di ottenere modelli strutturati e, con essi, efficienza, qualità e produttività dei progetti software che, in precedenza, erano focalizzati sulla risoluzione di problemi connessi alla scalabilità e alla scarsa integrazione dei sistemi, all’incongruenza dei dati e ad un approccio guidato principalmente dalla progettazione e costruzione dell’hardware. Nel corso degli anni, l’architettura software è stata estesa e applicata a vari domini, tra cui il cloud computing, la cybersecurity e il machine learning.
Il compito di un architetto del software consiste nell’esaminare complessivamente il sistema informativo e scegliere quali modelli, stili e tattiche supportano al meglio non solo le esigenze tecniche, ma anche le esigenze aziendali, come i costi di produzione, il personale e la valutazione dei rischi. Inoltre, devono consentire al loro prodotto di evolvere nel tempo.
Sebbene i computer quantistici stiano diventando finanziariamente accessibili, non è chiaro come e quando saranno messi in commercio. Nel frattempo, molte aziende stanno cercando di costruire hardware, linguaggi di programmazione e strumenti di supporto; mentre altre offrono l’accesso ai loro computer quantistici. Allora ci si pone il problema di come fa un architetto del software ad integrare o utilizzare queste risorse con il proprio sistema? Quali vantaggi comportano e quali costi? I computer quantistici si adattano con la stessa difficoltà di un nuovo database o un nuovo nodo di calcolo? Richiedono una gestione particolareggiata? Quanto sono sicuri, affidabili e performanti? In che modo gli architetti devono preparare i loro sistemi per fruire dei computer quantistici?
Poiché le organizzazioni si stanno orientando sempre di più verso l’adozione del calcolo quantistico, per sfruttare le sue potenzialità nel risolvere problemi complessi, è necessario applicare i principi dell’architettura del software al calcolo quantistico per gestire la complessità, ottenere la scalabilità e l’ottimizzazione delle prestazioni, consentire l’interoperabilità, supportare l’affidabilità e la sicurezza e, infine, promuovere la collaborazione e la condivisione della conoscenza. L’architettura del software fornisce un approccio strutturato alla progettazione dei sistemi software quantistici in grado di sfruttare efficacemente la potenza di calcolo delle tecnologie quantistiche.
Proviamo a identificare le astrazioni e le strategie utili ad integrare le tecnologie quantistiche in un sistema esistente con l’obiettivo di promuovere l’adozione di questi componenti.
Opportunità attese dal calcolo quantistico
Così come è accaduto con l’introduzione della blockchain o dell’intelligenza artificiale, la tecnologia quantistica è risucchiata all’interno di un vortice di aspettative gonfiate, seguito dallo scetticismo; pertanto, ci vorrà del tempo prima che diventi una vera opportunità di progresso. Affinché questo potenziale si realizzi, è necessario discernere il vero potenziale dalle false aspettative. Le tecnologie quantistiche propongono sensori, computer e comunicazioni con capacità che superano di gran lunga le tecnologie attuali. Con l’aumento della potenza di calcolo previsto, le applicazioni, precedentemente limitate dalle classiche capacità di calcolo, diventeranno concrete e attuabili.
L’esempio più evidente dei vantaggi promessi dai computer quantistici consiste nella violazione dello schema crittografico RSA-2048, uno degli algoritmi di crittografia attualmente più utilizzati. Per decifrare il codice è necessario fattorizzare un numero di 2.048 bit, il cui calcolo con gli attuali computer richiederebbe un tempo dell’ordine di trilioni di anni. Si prevede che i computer quantistici siano in grado di eseguire lo stesso calcolo entro ore o forse secondi. Questo salto di efficienza dimostra l’impressionante potenzialità delle tecnologie quantistiche.
Le opportunità quantistiche hanno una portata molto ristretta – al momento sono efficienti solo su determinati calcoli – per tale motivo i computer quantistici non sostituiranno integramente i computer classici, ma saranno utilizzati come coprocessori per accelerare alcune tipologie di calcoli, come già avviene con le unità di elaborazione grafica (GPU) o le schede video. Per esempio, non vi è alcun vantaggio nell’eseguire calcoli di base, come addizioni, moltiplicazioni e divisioni, su un computer quantistico. Mentre la quantistica può offrire notevoli miglioramenti in algoritmi che richiedono l’ottimizzazione, le ricerche, le trasformate di Fourier e la scomposizione in fattori primi. Questi algoritmi possono essere applicati per l’ottimizzazione di un portafoglio finanziario, nell’apprendimento automatico, nella scoperta di farmaci e nel miglioramento della logistica. A riguardo, sono molto promettenti le aspettative nel campo della chimica e della scienza dei materiali.
Sebbene esistano alcune opportunità per accelerare specifici calcoli di grandi dimensioni, l’aspettativa più importante offerta dai computer quantistici consiste nello sfruttare la capacità di calcolare tutte le possibili soluzioni, esattamente nello stesso momento, consentendo di sbloccare nuove frontiere del calcolo e affrontare problemi attualmente incalcolabili.
Il seguente grafico mette a confronto il tempo con la dimensione del problema in una ipotetica integrazione di componenti quantistici nei sistemi di calcolo classici.
Figura 1: Quantum Speedup (fonte: Disentangling Hype from Practicality: On Realistically Achieving Quantum Advantage di Torsten Hoefler, Thomas Häner e Matthias Troyer).
Cos’è un computer quantistico e come funziona
Per comprendere un computer quantistico e come interagisce con quelli classici, è utile prendere ad esempio la GPU – Graphics Processing Unit. La GPU è nata come scheda video. Gli utenti non interagiscono direttamente con la scheda video, ma con la CPU che la utilizza per effettuare alcuni calcoli specifici di rendering grafico. Lo stesso discorso vale per le tecnologie quantistiche. L’unità di elaborazione quantistica (QPU) non è direttamente accessibile a un utente e richiede un controller (chiamato controller quantistico). Questa combinazione di controller quantistico e QPU è ciò che chiamiamo computer quantistico o QC.
Gli architetti di sistema devono aspettarsi di vedere un computer quantistico in maniera molto simile alle istanze o alle interfacce fornite dalle GPU. Le istanze GPU includono un nodo di elaborazione o di controller con un certo numero di CPU, della memoria e un insieme di risorse. Allo stesso modo, un QC avrà un controller con un certo numero di CPU, della memoria dedicata e una QPU collegata.
La differenza tra una QPU e una GPU consiste nel modo in cui accelera un calcolo. La GPU utilizza un’architettura hardware progettata per eseguire in modo efficiente gli stessi piccoli processi matematici in parallelo su più core. Mentre, la QPU accelera il calcolo dando accesso a una nuova classe di algoritmi (tempo polinomiale quantistico con errore limitato o BQP) attraverso l’uso della sovrapposizione, dell’entanglement e dell’interferenza. Questa classe di algoritmi, sebbene sia limitata, offre accelerazioni quadratiche ed esponenziali rispetto alle loro classiche controparti.
Considerazioni sull’architettura del computer quantistico
Man mano che la tecnologia del calcolo quantistico avanza, diventa più complessa, e diviene sempre più stringente pianificare la sua integrazione con i sistemi esistenti. Pertanto, è necessario fornire una serie di considerazioni utili allo sviluppo di architetture software efficaci, che ottimizzino le capacità della tecnologia quantistica, in grado di gestire al contempo le richieste degli sviluppatori. Proviamo a comprendere le differenze e le sfide, ad oggi individuate dalla ricerca, utili all’integrazione delle tecnologie quantistiche nei sistemi esistenti, con l’obiettivo di promuoverne l’adozione.
La provvisorietà del dato sul computer quantistico
Il computer quantistico non utilizza bit o byte, come nei computer classici, ma utilizza bit quantistici o qubit. Il qubit non memorizza singoli bit di dati in uno stato 0 o 1; ma assume uno stato di sovrapposizione, uno stadio intermedio tra 0 e 1, simile al concetto incarnato nello Schrödinger’s cat. Lo stato sovrapposto di un qubit, come il destino del gatto all’interno della scatola, rimane inaccessibile. Dopo la lettura del qubit, lo stato collassa nel classico 0 o 1, con conseguente perdita di tutte le informazioni all’interno dello stato quantistico.
Inoltre, la durata dei dati sul qubit è eccezionalmente breve. Dal febbraio del 2022, la durata media è nell’ordine di 10-100 millisecondi, con una durata di vita più lunga registrata di cinque secondi. Per cui, i calcoli devono essere eseguiti entro questo intervallo di tempo, limitando i tipi di calcolo che possono essere eseguiti, e i dati devono essere ricaricati dopo ogni ciclo.
Di conseguenza, il caricamento dei dati su una QPU è una parte essenziale del processo perché è richiesto per ogni calcolo. Nel peggiore dei casi, il caricamento dei dati richiede una quantità di tempo esponenziale che annulla, di fatto, gli effetti dell’accelerazione quantistica. Si prospetta che in futuro i sensori quantistici consentiranno di inserire i dati direttamente nel QC.
Un obiettivo della progettazione del software potrebbe essere la scoperta e l’utilizzo di metodi per il caricamento efficiente dei dati su una QPU per ottenere il vantaggio quantistico rispetto ai sistemi puramente classici.
Lo stack di compilazione quantistica
Un costrutto fondamentale del calcolo quantistico è il circuito quantistico. Spesso, l’esecuzione di un algoritmo quantistico richiede la creazione di un circuito appropriato, un processo simile al classico approccio in cui per ogni calcolo viene modellato un circuito pieno di porte logiche. Questo processo è simile alla riconfigurazione ciclica di un field-programmable gate array (FPGA) o alla programmazione di un computer analogico per ogni singolo caso d’uso.
Quindi, i circuiti quantistici vengono compilati in un codice macchina appositamente adattato per una determinata QPU target. Questa traduzione, dalla progettazione di algoritmi di alto livello al codice macchina di basso livello, può essere vista come un framework simile a quello di IBM in cui OpenQASM è compilato in Qiskit-Pulse.
Le scelte fatte durante la generazione e l’ottimizzazione di questi circuiti quantistici – come la selezione del linguaggio di programmazione quantistica, i meccanismi di correzione degli errori o le disposizioni per la riallocazione dinamica – possono avere effetti significativi; pertanto, è fondamentale concentrarsi sullo sviluppo di questi framework, specializzandoli per la risoluzione di determinati problemi.
A volte è necessario che alcune informazioni concernenti la compilazione di basso livello passino ai livelli più alti di progettazione o architettura. In questa fase è difficile prevedere cosa sia necessario esporre tra compilatori quantistici e toolchain.
Prevedibilità, riproducibilità e non determinismo
Gli algoritmi standard si basano sulla riproducibilità del comportamento del software. Per esempio, un computer classico a parità di input da sempre lo stesso risultato, tranne che non si aggiungano intenzionalmente la casualità oppure si introducano degli errori derivanti da operazioni simultanee gestite in modo improprio. I computer classici funzionano in maniera completamente deterministica.
Molti algoritmi, come quelli delle reti neurali e dell’apprendimento automatico, sono basati su sistemi statistici che non forniscono risposte binarie o univoche. Piuttosto, esprimono una percentuale di fiducia dei loro risultati. Dare una risposta probabilistica non significa, però, che il sistema non sia deterministico perché, dato lo stesso input e capacità di calcolo, il sistema restituirebbe esattamente la stessa confidenza.
Per via della fisica legata alla meccanica quantistica, i computer quantistici non sono deterministici e sono inaffidabili. Un computer quantistico a volte può restituire la risposta sbagliata anche per un semplice calcolo. Pertanto, l’informatica quantistica richiederà molti aggiustamenti per mascherare, ridurre o correggere questo rumore quantistico causa di errori. Fino a quando non avremo computer quantistici tolleranti agli errori, gli architetti di sistema dovranno gestire il non determinismo di queste macchine. L’approccio più utilizzato consiste nell’eseguire più volte un algoritmo di “voting” per mostrare la risposta giusta. Abbiamo compreso che la combinazione di un algoritmo statistico con un sistema incerto e non deterministico comporterà alcune difficoltà.
Comunque, i computer quantistici potrebbero rendere molto più veloci gli algoritmi statistici. Durante l’addestramento di un algoritmo di apprendimento automatico si utilizzano una serie di condizioni iniziali casuali per dargli più opzioni ed evitare che possa rimanere bloccato su soluzioni non ottimali. Con un computer classico, il sistema sceglierebbe uno stato iniziale alla volta. Mentre, i computer quantistici dovrebbero, teoricamente, essere in grado di calcolare contemporaneamente diverse variazioni (condizioni iniziali) del modello. Questa capacità è una caratteristica impercettibile ma molto potente offerta dai computer quantistici. Pertanto, l’algoritmo dovrebbe essere riprogettato per sfruttare le proprietà quantistiche e si potrebbe evitare di dover ricorrere agli algoritmi basati sulle simulazioni Monte-Carlo. Tuttavia, poiché tali variazioni sono generate all’interno dei circuiti quantistici, l’approccio non è deterministico.
Infine, ricordiamo le note proprietà quantistiche, come la sovrapposizione e il non determinismo, che rendono difficile la riproducibilità del circuito. A causa di questa mancanza, dovranno essere ripensate le attuali tecniche di testing e integrazione.
La distribuzione del calcolo quantistico
Molto probabilmente le tecnologie quantistiche seguiranno i modelli di commercializzazione già sfruttate da altre tecnologie dirompenti. A causa della loro complessità, dei requisiti fisici e del costo dell’hardware quantistico, possiamo aspettarci che la maggior parte degli utenti accederanno alle risorse quantistiche attraverso un modello di business “as a service”: Quantum Compute as a Service. Tale offerta sarà simile agli attuali modelli HPC (High performance computing), pertanto gli architetti del software dovranno essere preparati a fornire i dati necessari (partizionamento, trasmissione, memorizzazione nella cache, ecc.) all’offerta di calcolo quantistico remoto.
Le metriche del calcolo quantistico
La possibilità di disporre di metriche affidabili per valutare le prestazioni dei computer, sia che venga utilizzato per giocare o per eseguire calcoli scientifici di alto livello, è sempre stato un elemento fondamentale. La definizione di questi parametri si è evoluta parallelamente ai progressi dell’informatica.
Negli anni ’90 la misura principale della velocità del computer erano i cicli di clock o i megahertz dei processori. Sebbene si trattasse di una strategia commerciale, i megahertz fungevano da termine di paragone per confrontare la velocità di esecuzione dello stesso sistema operativo sui diversi computer. Quando abbiamo raggiunto il limite massimo di velocità dei processori, ci si è concentrati su altri fattori quali: il miglioramento delle istruzioni per ciclo di clock, la parallelizzazione delle istruzioni, l’ottimizzazione della pianificazione e dell’utilizzo dei thread e, infine, la transizione ai sistemi multicore.
Attualmente, il parametro più utilizzato è il numero di operazioni al secondo e di operazioni in virgola mobile al secondo (FLOPS). Tuttavia, il FLOPS misura solo la velocità di elaborazione e non consente di rilevare la capacità di archiviazione dei dati o la portata dei calcoli che un computer può gestire. Quando si valuta l’offerta di servizi si esaminano: il numero di core, la memoria della CPU e, nel caso delle GPU, il modello e la dimensione della memoria. La crescente richiesta di memoria per l’elaborazione di large language models (LLMs) sposta l’attenzione su quest’ultimo elemento.
I computer quantistici vengono spesso misurati in base al numero di qubit e commercializzati in base al tempo di elaborazione. Tuttavia, questi parametri sono limitanti perché non considerano altri fattori che possono limitare la capacità algoritmica della QPU come: la connettività dei qubit, il tasso d’errore, la velocità del gate o il tipo di qubit.
Le future metriche dell’informatica quantistica dovrebbero tenere conto dei tassi di errore, della velocità del gate, della connettività dei qubit, della durata di vita dei qubit e di molti altri fattori che influenzano la potenza computazionale complessiva e l’efficienza. È plausibile che si arriverà ad affittare la capacità computazionale in termini di qubit-ora, ma le specifiche dipenderanno dagli sviluppi tecnologici e dalle esigenze in evoluzione degli utenti.
Conclusioni
In sintesi, la progettazione del software in grado di sfruttare la capacità di calcolo dei computer quantistici presuppone un approccio completamente diverso, che tenga conto delle peculiarità e dei limiti che questi sistemi, ad oggi, si portano dietro.
In questo breve articolo sono elencate le principali differenze emerse da un confronto tra il modello computazione classico, basato sul bit, e il modello quantistico, basato sul qbit, utili a comprendere le modalità per integrare i due modelli di calcolo. La soluzione proposta consiste nel far interagire le due tecnologie per farsi si che si possano sfruttare le potenzialità di entrambi, da un lato la stabilità e la determinatezza e dall’altro la potenza di calcolo.
A riguardo, i progettisti software dovranno immaginare interfacce in grado di far colloquiare i due mondi, i sistemi classici e quelli quantistici, per far fronte ai costi esorbitanti e per risolvere i problemi di instabilità di questi ultimi. Il modello più utilizzato nel prossimo futuro sarà il Quantum Compute as a Service. Quindi lo scenario di sviluppo del software sfrutterà i sistemi di elaborazione classici, per quei calcoli dove ancora oggi risultano competitivi, mentre “delegheranno” alcuni calcoli ai sistemi quantistici per sfruttarne le capacità computazionali.