Provider Rigetti
Suggerimento
Quando si crea un'area di lavoro di Azure Quantum, si ottengono automaticamente crediti Azure Quantum gratuiti per ogni provider di hardware quantistico. È possibile usare i crediti Azure Quantum per inviare i primi programmi quantistici all'hardware quantistico reale.
Nota
La QPU Ankaa-2 è deprecata dal servizio Azure Quantum a partire dal 4 ottobre 2024.
I processori quantistici Rigetti sono macchine universali e modello gate basate su qubit superconduttori ottimizzabili. Le funzionalità di sistema e le caratteristiche dei dispositivi includono funzionalità di lettura avanzate, un aumento dei tempi di elaborazione quantistica, tempi di gate rapidi per più famiglie di gate entangling, campionamento rapido tramite la reimpostazione del registro attiva e controllo parametrico.
- Editore: Rigetti
- ID provider:
rigetti
Il provider Rigetti rende disponibili quanto segue targets :
Nome in Target | ID Target | Numero di qubit | Descrizione |
---|---|---|---|
Macchina virtuale quantistica (QVM) | rigetti.sim.qvm | - | Simulatore open source per i programmi Quil, Q# e Qiskit. Gratuito. |
Nota
I simulatori di Rigetti e l'hardware targets non supportano i programmi Cirq.
Rigetti targets corrisponde a un QIR Base profilo. Per altre informazioni su questo target profilo e sulle relative limitazioni, vedere Informazioni sui target tipi di profilo in Azure Quantum.
Simulators
La macchina virtuale quantistica (QVM) è un simulatore open source per Quil. accetta rigetti.sim.qvm
target un programma Quil come testo ed esegue il programma in QVM ospitato nel cloud, restituendo risultati simulati.
- Tipo di processo:
Simulation
- Formati di dati:
rigetti.quil.v1
,rigetti.qir.v1
- Target ID:
rigetti.sim.qvm
- Target Profilo di esecuzione: QIR Base
- Prezzi: gratuito ($ 0)
Prezzi
Per visualizzare il piano di fatturazione di Rigetti, vedere Prezzi di Azure Quantum.
Formato di input
Tutti i Rigetti targets attualmente accettano due formati:
rigetti.quil.v1
, che è il testo di un programma Quil .rigetti.qir.v1
, ovvero codice bit QIR.
Tutti targets accettano anche il parametro integer facoltativo count
per definire il numero di scatti da eseguire. Se omesso, il programma viene eseguito una sola volta.
Quil
Tutti i Rigetti targets accettano il rigetti.quil.v1
formato di input, ovvero il testo di un programma Quil , che è l'acronimo di Quantum Instruction Language. Per impostazione predefinita, i programmi vengono compilati usando quilc prima dell'esecuzione. Tuttavia, quilc non supporta le funzionalità di controllo a livello di impulso (Quil-T), quindi se vuoi usare queste funzionalità devi fornire un programma Quil nativo (che contiene anche Quil-T) come input e specificare il parametro skipQuilc: true
di input .
Per semplificare la costruzione di un programma Quil, è possibile usare pyQuil
insieme al pyquil-for-azure-quantum
pacchetto. Senza questo pacchetto, pyQuil
può essere usato per costruire programmi Quil, ma non per inviarli ad Azure Quantum.
QIR
Tutto l'hardware Rigetti supporta l'esecuzione di Quantum Intermediate Representation processi conformi (QIR) con il QIR Base profilo v1 come rigetti.qir.v1
. QIR offre un'interfaccia comune che supporta molti linguaggi quantistici e target piattaforme per il calcolo quantistico e consente la comunicazione tra linguaggi e computer di alto livello. Ad esempio, è possibile inviare processi Q#, Quil o Qiskit all'hardware Rigetti e Azure Quantum gestisce automaticamente l'input. Per ulteriori informazioni, vedere Quantum Intermediate Representation.
Selezione del formato di input corretto
È consigliabile usare Quil o un altro linguaggio conforme a QIR? Si tratta del caso d'uso finale. QIR è più accessibile per molti utenti, mentre Quil è oggi più potente.
Se si usa Qiskit, Q# o un altro toolkit che supporta la generazione di QIR e l'applicazione funziona su Rigetti targets tramite Azure Quantum, QIR è ideale per l'utente. QIR ha una specifica in rapida evoluzione e Rigetti continua ad aumentare il supporto per i programmi QIR più avanzati man mano che passa il tempo- ciò che non può essere compilato oggi potrebbe essere ben compilato domani.
D'altra parte, i programmi Quil esprimono il set completo di funzionalità disponibili per gli utenti dei sistemi Rigetti da qualsiasi piattaforma, tra cui Azure Quantum. Se si sta cercando di personalizzare la scomposizione dei cancelli quantistici o scrivere programmi a livello di impulso, è consigliabile lavorare in Quil, perché queste funzionalità non sono ancora disponibili tramite QIR.
Esempi
Il modo più semplice per inviare processi Quil consiste nell'usare il pyquil-for-azure-quantum
pacchetto, in quanto consente di usare gli strumenti e la documentazione della pyQuil
libreria.
È anche possibile costruire manualmente i programmi Quil e inviarli usando direttamente il azure-quantum
pacchetto.
from pyquil.gates import CNOT, MEASURE, H
from pyquil.quil import Program
from pyquil.quilbase import Declare
from pyquil_for_azure_quantum import get_qpu, get_qvm
# Note that some environment variables must be set to authenticate with Azure Quantum
qc = get_qvm() # For simulation
program = Program(
Declare("ro", "BIT", 2),
H(0),
CNOT(0, 1),
MEASURE(0, ("ro", 0)),
MEASURE(1, ("ro", 1)),
).wrap_in_numshots_loop(5)
# Optionally pass to_native_gates=False to .compile() to skip the compilation stage
result = qc.run(qc.compile(program))
data_per_shot = result.readout_data["ro"]
# Here, data_per_shot is a numpy array, so you can use numpy methods
assert data_per_shot.shape == (5, 2)
ro_data_first_shot = data_per_shot[0]
assert ro_data_first_shot[0] == 1 or ro_data_first_shot[0] == 0
# Let's print out all the data
print("Data from 'ro' register:")
for i, shot in enumerate(data_per_shot):
print(f"Shot {i}: {shot}")