Nvidia CUDA-Q – Quantum accelerated supercomputing

NVIDIA CUDA-Q rappresenta un modello di programmazione “open source” per la creazione di applicazioni quantistiche classiche.

Con il framework Nvidia CUDA-Q, carichi di lavoro utili del calcolo quantistico verranno eseguiti su architetture informatiche eterogenee come unità di elaborazione quantistica (QPU), GPU e CPU in tandem per risolvere problemi del mondo reale. CUDA-Q consente l’accelerazione di tali applicazioni fornendo gli strumenti per programmare armoniosamente queste architetture informatiche.

La capacità di indirizzare più QPU e GPU è essenziale per scalare le applicazioni quantistiche. La distribuzione dei carichi di lavoro su più endpoint di calcolo può ottenere notevoli accelerazioni quando questi carichi di lavoro possono essere parallelizzati. Una nuova funzionalità CUDA-Q consente di programmare senza problemi piattaforme multi-QPU insieme a più GPU.

Gran parte dell’accelerazione in CUDA-Q viene eseguita utilizzando Message Passing Interface (MPI), un protocollo di comunicazione creato per la programmazione parallela. È particolarmente utile per risolvere problemi che richiedono grandi quantità di calcoli, come le previsioni meteorologiche e le simulazioni di dinamica dei fluidi e molecolari. Ora, CUDA-Q può essere integrato con qualsiasi implementazione MPI utilizzando un plug-in MPI, in modo che i client possano utilizzare facilmente CUDA-Q con la configurazione MPI di cui già dispongono.

Simulazione di circuiti in scala con multi-GPU

La simulazione del circuito per n qubit è limitata dalla memoria richiesta per memorizzare il vettore di stato bidimensionale. Le GPU NVIDIA Hopper H100 offrono 80 GB di memoria ciascuna per i target CUDA-Q per eseguire la simulazione esatta del vettore di stato oltre i limiti di ciò che è fattibile con l’attuale hardware QPU.

Inoltre, il target nvidia-mgpu raggruppa la memoria di più GPU in un nodo e di più nodi in un cluster per consentire il ridimensionamento e rimuovere il collo di bottiglia della memoria della singola GPU. Questo strumento software pronto all’uso in CUDA-Q funziona allo stesso modo per un singolo nodo come per decine o addirittura migliaia di nodi. I conteggi dei qubit sono limitati solo dalle risorse GPU disponibili.

Pertanto, per un nodo con quattro GPU, ciascuna con 80 GB di memoria, è possibile utilizzare 80 x 4 = 320 GB di memoria per archiviare e manipolare il vettore dello stato quantistico per la simulazione del circuito.

Nvidia CUDA-Q

Parallelizzazione con multi-QPU

La modalità multi-QPU consente di programmare flussi di lavoro futuri in cui la parallelizzazione può ridurre il tempo di esecuzione di un fattore pari alle risorse di calcolo disponibili.

Si immagini un protocollo di taglio di circuiti in cui un taglio richiede l’esecuzione di più sottocircuiti, i cui risultati vengono ricuciti insieme in post-elaborazione. Nel software tradizionale, questi sottocircuiti verrebbero eseguiti in sequenza. Tuttavia, con il target nvidia-mqpu in CUDA-Q, l’esecuzione di questi sottocircuiti avverrà in parallelo, riducendo drasticamente il tempo di esecuzione.

Attualmente, ciascuna QPU nel target nvidia-mqpu è una GPU.

Un altro flusso di lavoro comune definito “embarassingly parallel” è il calcolo del valore atteso di un hamiltoniano con molti termini. Con la modalità multi-QPU è possibile definire più endpoint, in cui ciascun endpoint può simulare una parte indipendente del problema. Utilizzando il target nvidia-mqpu, è possibile eseguire, ad esempio, più termini di un hamiltoniano in parallelo in modo asincrono. Per i dettagli, vedere Programmazione del supercomputer quantistico-classico.

Per il cluster di quattro GPU menzionato in precedenza, il calcolo dei termini hamiltoniani in parallelo, rispetto alla loro valutazione su una singola GPU, consente di ottenere una velocità 4 volte superiore. Se il calcolo sequenziale richiede 1 ora, con più endpoint, richiede solo 15 minuti. Tuttavia, la dimensione del problema su ciascuna GPU è ancora limitata a 80 GB.

Nvidia CUDA-Q

Combinazione di carichi di lavoro multi-QPU e multi-GPU

Come spiegato in precedenza, è possibile raggiungere la scala della simulazione di circuiti quantistici con il target nvidia-gpu e la parallelizzazione con il target nvidia-mqpu. Con CUDA-Q 0.6, è ora possibile combinare i due target, consentendo l’esecuzione in parallelo di simulazioni su larga scala.

Tornando all’esempio precedente, se il calcolo sequenziale richiedesse 1 ora, con due endpoint, occorrerebbero solo 30 minuti, ma ciascun endpoint può essere costituito da due GPU NVIDIA A100 e contenere un vettore di stato da 160 GB.

Nvidia CUDA-Q

In qualità di sviluppatore, ora puoi sperimentare per trovare il punto giusto tra la dimensione del problema e il numero di endpoint paralleli, utilizzando al massimo le tue GPU. Consulta la documentazione CUDA-Q per ulteriori informazioni sulla destinazione remote-mqpu.

Plug-in MPI

MPI è un protocollo di comunicazione utilizzato per programmare computer paralleli.

CUDA-Q utilizza MPI ed è costruito con Open MPI, che è un’implementazione open source del protocollo MPI. Esistono altre implementazioni MPI popolari come MPICH e MVAPICH2 e molti centri o data center di calcolo ad alte prestazioni (HPC) sono già configurati con un’implementazione specifica.

Ora è più semplice che mai integrare CUDA-Q con qualsiasi implementazione MPI, tramite un’interfaccia plug-in MPI. È necessario uno script di attivazione una tantum per creare una libreria dinamica per l’implementazione. CUDA-Q 0.6 include implementazioni di plugin compatibili con Open MPI e MPICH. Contributi per ulteriori implementazioni MPI sono benvenuti e dovrebbero essere facili da aggiungere.

Scopri di più su come utilizzare il plug-in MPI nella sezione Distributed Computing with MPI della documentazione CUDA-Q.

Ulteriori informazioni su CUDA-Q

Visita NVIDIA/cuda-quantum per visualizzare il registro completo della versione CUDA-Q 0.6. CUDA-Q Quick Start ti guida attraverso i passaggi di configurazione con esempi Python e C++. Per casi d’uso avanzati per applicazioni quantistiche classiche, vedere i tutorial CUDA-Q. Infine, esplora il codice, segnala i problemi e fornisci suggerimenti sulle funzionalità nel repository open source CUDA-Q.

(fonte: developer.nvidia.com)

 

Iscriviti ai nostri gruppi Telegram

Link utili

Seguici per non perdere le prossime novità!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.