Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Microsoft Quantum Development Kit (QDK) fornisce diversi ambienti di sviluppo per programmi OpenQASM con integrazione Azure Quantum. Questo articolo illustra come sviluppare ed eseguire OpenQASM codice in:
- Estensione QDK in Visual Studio Code (VS Code)
- Il pacchetto QDK Python in Jupyter Notebook.
Gli strumenti per sviluppatori come ad esempio CodeLends, IntelliSense, il completamento del codice e il debugging dei breakpoint si trovano disponibili solo nell'estensione VS Code. Altre funzionalità sono disponibili solo nel pacchetto Python. Ad esempio, è possibile passare Q# e OpenQASM callable come oggetti Python e compilare OpenQASM programmi che accettano input in QIR.
Prerequisiti
Installare la versione più recente di VS Code
Per lavorare direttamente con i OpenQASM file, installa l'estensione QDK più recente su .
Per usare OpenQASM in Python e Jupyter Notebook, installare la versione più recente dell'estensione Python e l'estensione Jupyter in VS Code.
Installare la versione più recente del
qdkpacchetto Python con gli elementi aggiuntivijupyter:pip install --upgrade "qdk[jupyter]"
Lavorare con OpenQASM in VS Code utilizzando l'estensione QDK
Per scrivere OpenQASM codice in VS Code, aprire un progetto Q# e creare un OpenQASM file con un'estensione .qasm . Riconosce automaticamente QDK il file .qasm come OpenQASM, e le funzionalità per QDK sono disponibili durante la scrittura del codice OpenQASM.
Le seguenti funzionalità QDK sono disponibili nei programmi OpenQASM in VS Code:
- Completamento del codice
- Obiettivi di codice (esecuzione, istogramma, stima, debug e circuito)
- Evidenziazione della sintassi e funzionalità di base della sintassi, ad esempio corrispondenza delle parentesi graffe
- Errore durante il controllo dei file di OpenQASM origine
- Debugging dei punti di interruzione ed esecuzione di script per i file di origine OpenQASM
- Debug con generazione di circuiti live
- Integrazione con Azure Quantum per l'esecuzione di processi quantistici
Per eseguire il programma OpenQASM da VS Code, è possibile usare il simulatore locale di QDK oppure inviare il codice come processo a Azure Quantum.
Eseguire il codice nel QDK simulatore locale
Per eseguire il codice OpenQASM nel simulatore quantistico sparso locale in VS Code, aprire un file .qasm e quindi selezionare il comando Esegui da CodeLens all'inizio del file. L'output del tuo programma viene visualizzato nel terminale VS Code.
Annotazioni
QDK tenta automaticamente di impostare un profilo QIR target compatibile con il programma. Se il profilo QIR target non supporta le operazioni nel programma, vengono visualizzati errori del compilatore quando si esegue il OpenQASM codice. Per ulteriori informazioni sui profili target, vedere Tipi diversi di profili target in Azure Quantum.
Programmi di esempio predefiniti
Il QDK viene fornito con diversi esempi di algoritmi quantistici predefiniti per OpenQASM. Per provare gli algoritmi di esempio, immettere sample in un file vuoto .qasm . Viene visualizzato un elenco di completamento che contiene gli algoritmi di esempio. Scegliere un esempio e quindi eseguire il codice generato.
Eseguire il debug in locale in VS Code
QDK include un debugger per OpenQASM. Il debugger supporta il debugging in stile punto di interruzione e può visualizzare lo stato del programma.
Per avviare il debugger, selezionare il comando Debug dalla lente del codice.
In modalità di debug è possibile impostare punti di interruzione nel codice per facilitare il debug. Lo stato del programma viene visualizzato nel riquadro ESEGUI E DEBUG . Ad esempio, è possibile visualizzare gli stati delle variabili locali e gli stati qubit.
Esegui il codice su Azure Quantum
Per eseguire OpenQASM programmi in Azure Quantumtargets, è necessario avere un'area Azure Quantum di lavoro. Per creare un'area Azure Quantum di lavoro, vedere Creare un'area Azure Quantum di lavoro.
Per inviare OpenQASM attività a Azure Quantum da VS Code, devi connetterti al tuo spazio di lavoro Azure Quantum. Per connettersi allo spazio di lavoro da VS Code, vedi Connettersi tramite una stringa di connessione.
Per inviare un OpenQASM job a Azure Quantum da VS Code, segui questi passaggi:
- Apri il file
qasmche contiene il programma in VS Code. - Selezionare l'icona Microsoft Quantum per aprire il pannello quantum Microsoft.
- Espandere l'elenco a discesa QUANTUM WORKSPACES e selezionare l'area di lavoro.
- Espandi l'elenco a discesa Providers e seleziona un provider, quindi seleziona l'target su cui eseguire il processo. Ad esempio, invia il tuo job a
rigetti.svm.simtarget per eseguire il tuo programma sul simulatore backend di Rigetti. Per altre informazioni sul provider e target sulla disponibilità, vedere Aggiungere o rimuovere un provider in un'area di lavoro esistente. - Selezionare l'icona di riproduzione accanto al target nome.
- Per inviare il lavoro, immettere i valori nei campi Nome lavoro e Numero di scatti.
Per visualizzare i tempi e lo stato di un processo, espandere l'elenco a discesa Processi e passare il puntatore del mouse sul nome del processo. Per scaricare i risultati del processo, selezionare l'istogramma o le icone di testo accanto al nome del processo.
Usare OpenQASM in Python e Jupyter Notebook
Con il QDK pacchetto Python, è possibile eseguire OpenQASM il codice direttamente e passare OpenQASM circuiti come operazioni ai programmi Q#. Scrivere il codice
Eseguire OpenQASM direttamente in Python
Per eseguire OpenQASM il codice direttamente, usare la funzione run del modulo qdk.openqasm. Ad esempio, il codice seguente esegue 10 scatti nel simulatore locale di un semplice OpenQASM programma con rumore:
from qdk import BitFlipNoise
from qdk.openqasm import run
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
results = run(qasm_code, shots=10, noise=BitFlipNoise(0.1))
print(results)
Chiamare un OpenQASM programma in Q#
È possibile usare la funzione
from qdk import qsharp
from qdk.openqasm import import_openqasm
qasm_code = """
include "stdgates.inc";
qubit[2] q;
reset q;
h q[0];
cx q[0], q[1];
bit c = measure q[1];
"""
import_openqasm(qasm_code, name="bell")
Quando bell fa parte dell'ambiente, è possibile eseguirlo direttamente da una cella Q#:
%%qsharp
use qs = Qubit[2];
bell(qs)
È anche possibile usare la funzionalità del QDK pacchetto con bell, ad esempio simulazione rumorosa, rendering del circuito e generazione di codice.
Programmi parametrizzati OpenQASM
La cella seguente crea un circuito OpenQASM che accetta un angolo theta come input, quindi chiama il circuito come funzione Python:
from qdk.openqasm import import_openqasm, ProgramType
qasm_code = """
include "stdgates.inc";
input float theta;
qubit[2] q;
rx(theta) q[0];
rx(-theta) q[1];
bit[2] c;
c = measure q;
"""
import_openqasm(qasm_code, name="parameterized_circuit", program_type=ProgramType.File)
from qdk.code.qasm_import import parameterized_circuit
parameterized_circuit(1.57)
Trasferire il programma OpenQASM a Q#
Con il QDK pacchetto Python, è possibile passare direttamente un OpenQASM programma a un programma Q#. Ad esempio, il codice seguente crea un OpenQASM programma denominato Entangle e quindi usa Entangle come operazione in un programma Q#:
from qdk.openqasm import import_openqasm
from qdk import qsharp
qasm_code = """
include "stdgates.inc";
qubit[2] qs;
h qs[0];
cx qs[0], qs[1];
"""
import_openqasm(qasm_code, name="Entangle")
qsharp.eval("{ use qs = Qubit[2]; Entangle(qs); MResetEachZ(qs) }")
Quando si importano Q# e si importano programmi OpenQASM in un ambiente Python con qsharp.eval e import_openqasm, questi programmi diventano oggetti Python che è possibile chiamare nel codice Python. Ad esempio, il codice seguente crea un programma Q# denominato TestAntiCorrelation e passa il EntangleOpenQASM programma a TestAntiCorrelation:
qsharp.eval("""
operation TestAntiCorrelation(entangler : Qubit[] => Unit) : Result[] {
use qs = Qubit[2];
X(qs[1]);
entangler(qs);
MResetEachZ(qs)
}
""")
from qdk.code import Entangle, TestAntiCorrelation
TestAntiCorrelation(Entangle)
OpenQASM Compilare programmi in QIR
È possibile compilare OpenQASM il codice in Quantum Intermediate Representation (QIR) con la funzione compile.
Ad esempio, la cella seguente compila OpenQASM il codice per un circuito con parametri in QIR:
from qdk import TargetProfile
from qdk.openqasm import import_openqasm, ProgramType
from qdk import qsharp
qsharp.init(target_profile=TargetProfile.Base)
qasm_code = """
include "stdgates.inc";
input float theta;
qubit[2] q;
rx(theta) q[0];
rx(-theta) q[1];
bit[2] c;
c = measure q;
"""
import_openqasm(qasm_code, name="parameterized_circuit", program_type=ProgramType.File)
from qdk.code.qasm_import import parameterized_circuit
bound_compilation = qsharp.compile(parameterized_circuit, 1.57)
print(bound_compilation)
Annotazioni
Per compilare OpenQASM programmi che accettano variabili di input in QIR, è necessario usare il QDK pacchetto Python. Non è possibile compilare programmi parametrizzati \
Inviare OpenQASM programmi a Azure Quantum
Per inviare un programma OpenQASM da eseguire su un Azure Quantumtarget, compilare il codice OpenQASM in QIR e quindi inviare il QIR per l'esecuzione su Azure Quantum.
Ad esempio, compila un semplice circuito di intreccio in QIR.
from qdk.openqasm import compile
qasm_code = """
include "stdgates.inc";
bit[2] c;
qubit[2] q;
h q[0];
cx q[0], q[1];
c = measure q;
"""
qir_compilation = compile(qasm_code)
Per eseguire un processo QIR su Azure Quantum, connettiti all'area di lavoro quantistica e invia il processo a uno dei targets disponibili nell'area di lavoro. Ad esempio, inviare l'entanglement QIR per l'esecuzione nel simulatore back-end IonQ.
from qdk.azure import Workspace
workspace = Workspace(resource_id="") # Add the resource ID of your workspace
target = workspace.get_targets('ionq.simulator')
job = target.submit(qir_compilation, shots=100)
print("Job submitted. Waiting for results...")
results = job.get_results()
print(results)
Sviluppo in corso OpenQASM nello QDK
Il supporto per OpenQASM in QDK è in corso.
Per un elenco delle funzionalità di OpenQASM in fase di sviluppo nel QDK, vedere Limitazioni e problemi nel wiki del repository QDK GitHub.