Utilizzo di CUDA-Q con Amazon Braket - Amazon Braket

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo di CUDA-Q con Amazon Braket

NVIDIA’s CUDA-Qè una libreria software progettata per la programmazione di algoritmi quantistici ibridi che combinano CPUs unità di elaborazione quantistiche e quantistiche (). GPUs QPUs Fornisce un modello di programmazione unificato, che consente agli sviluppatori di esprimere istruzioni classiche e quantistiche all'interno di un unico programma, semplificando i flussi di lavoro. CUDA-Qaccelera la simulazione e il runtime quantistici dei programmi grazie ai simulatori di CPU e GPU integrati.

L'utilizzo CUDA-Q su Amazon Braket Hybrid Jobs offre un ambiente di elaborazione flessibile e on-demand. Le istanze computazionali vengono eseguite solo per la durata del carico di lavoro, assicurandoti di pagare solo per ciò che usi. Amazon Braket Hybrid Jobs offre anche un'esperienza scalabile. Gli utenti possono iniziare con istanze più piccole per la prototipazione e il test, quindi passare a istanze più grandi in grado di gestire carichi di lavoro maggiori per esperimenti completi.

Il supporto di Amazon Braket Hybrid Jobs GPUs è essenziale per massimizzare CUDA-Q il potenziale di Amazon Braket. GPUs velocizza notevolmente le simulazioni di programmi quantistici rispetto ai simulatori basati su CPU, specialmente quando si lavora con circuiti ad alto numero di qubit. La parallelizzazione diventa semplice quando viene utilizzata su Amazon CUDA-Q Braket Hybrid Jobs. Hybrid Jobs semplifica la distribuzione del campionamento dei circuiti e delle valutazioni osservabili su più nodi computazionali. Questa perfetta parallelizzazione dei carichi di lavoro consente agli utenti di concentrarsi maggiormente sullo sviluppo dei propri CUDA-Q carichi di lavoro piuttosto che sulla creazione di infrastrutture per esperimenti su larga scala.

Per iniziare, consulta l'esempio CUDA-Q iniziale sulla pagina Github dedicata agli esempi di Amazon Braket per creare un contenitore di lavoro che CUDA-Q supporti il Bring Your Own Container (BYOC). Assicurati di disporre delle autorizzazioni IAM appropriate per creare e pubblicare il tuo CUDA-Q contenitore in un repository Amazon ECR.

Il seguente frammento di codice è un hello-world esempio di esecuzione di un CUDA-Q programma con Amazon Braket Hybrid Jobs.

image_uri = "<ecr-image-uri>" @hybrid_job(device='local:nvidia/qpp-cpu', image_uri=image_uri) def hello_quantum(): import cudaq # define the backend device=get_job_device_arn() cudaq.set_target(device.split('/')[-1]) # define the Bell circuit kernel = cudaq.make_kernel() qubits = kernel.qalloc(2) kernel.h(qubits[0]) kernel.cx(qubits[0], qubits[1]) # sample the Bell circuit result = cudaq.sample(kernel, shots_count=1000) measurement_probabilities = dict(result.items()) return measurement_probabilities

L'esempio precedente simula un circuito Bell su un simulatore di CPU. Questo esempio viene eseguito localmente sul laptop o sul notebook Braket Jupyter. A causa dell'local=Trueimpostazione, quando si esegue questo script, nell'ambiente locale verrà avviato un contenitore per eseguire il programma CUDA-Q per il test e il debug. Dopo aver terminato il test, puoi rimuovere il flag ed eseguire il local=True tuo lavoro. AWS Per ulteriori informazioni, consulta la pagina Guida introduttiva ad Amazon Braket Hybrid Jobs.

Se i tuoi carichi di lavoro hanno un numero elevato di qubit, un gran numero di circuiti o un gran numero di iterazioni, puoi utilizzare risorse di elaborazione della CPU più potenti specificando l'impostazione. instance_config Il seguente frammento di codice mostra come configurare l'impostazione nel decoratore. instance_config hybrid_job Per ulteriori informazioni sui tipi di istanza supportati, consulta Configurare l'istanza di job ibrida per eseguire lo script. Per un elenco dei tipi di istanze, consulta Amazon EC2 Instance types.

@hybrid_job( device="local:nvidia/qpp-cpu", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.c5.2xlarge"), ) def my_job_script(): ...

Per carichi di lavoro più impegnativi, puoi eseguire i tuoi carichi di lavoro su un simulatore CUDA-Q GPU. Per abilitare un simulatore GPU, usa il nome del backend. nvidia Il nvidia backend funziona come un simulatore di GPU. CUDA-Q Quindi, seleziona un tipo di EC2 istanza Amazon che supporti una NVIDIA GPU. Il seguente frammento di codice mostra il decoratore configurato dalla GPU. hybrid_job

@hybrid_job( device="local:nvidia/nvidia", image_uri=image_uri, instance_config=InstanceConfig(instanceType="ml.p3.2xlarge"), ) def my_job_script(): ...

Amazon Braket Hybrid Jobs supporta simulazioni GPU parallele con. CUDA-Q Puoi parallelizzare la valutazione di più osservabili o più circuiti per aumentare le prestazioni del tuo carico di lavoro. Per parallelizzare più osservabili, apporta le seguenti modifiche allo script dell'algoritmo.

Imposta l'mgpuopzione del backend. nvidia Ciò è necessario per parallelizzare gli osservabili. La parallelizzazione utilizza MPI per la comunicazione tra di loro GPUs, quindi MPI deve essere inizializzato prima dell'esecuzione e finalizzato dopo.

Quindi, specifica la modalità di esecuzione impostando. execution=cudaq.parallel.mpi Il seguente frammento di codice mostra queste modifiche.

cudaq.set_target("nvidia", option="mqpu") cudaq.mpi.initialize() result = cudaq.observe( kernel, hamiltonian, shots_count=n_shots, execution=cudaq.parallel.mpi ) cudaq.mpi.finalize()

Nel hybrid_job decoratore, specifica un tipo di istanza che ne ospita più di uno, GPUs come mostrato nel seguente frammento di codice.

@hybrid_job( device="local:nvidia/nvidia-mqpu", instance_config=InstanceConfig(instanceType="ml.p3.8xlarge", instanceCount=1), image_uri=image_uri, ) def parallel_observables_gpu_job(sagemaker_mpi_enabled=True): ...

Il notebook di simulazioni parallele negli esempi di Amazon Braket Github end-to-end fornisce esempi che dimostrano come eseguire simulazioni di programmi quantistici su backend di GPU ed eseguire simulazioni parallele di osservabili e batch di circuiti.

Esecuzione dei carichi di lavoro su computer quantistici

Dopo aver completato i test del simulatore, puoi passare all'esecuzione di esperimenti su. QPUs Basta passare il target a una QPU Amazon Braket, ad esempio IQMIonQ, o dispositivi. Rigetti Il seguente frammento di codice illustra come impostare la destinazione sul dispositivo. IQM Garnet Per un elenco di quelli disponibili QPUs, consulta la console Amazon Braket.

device_arn = "arn:aws:braket:eu-north-1::device/qpu/iqm/Garnet" cudaq.set_target("braket", machine=device_arn)

Per ulteriori informazioni su Amazon Braket Hybrid Jobs, consulta Working with Amazon Braket Hybrid Jobs nella guida per sviluppatori. Per ulteriori informazioni su CUDA-Q, consulta la documentazione su CUDA-Q.