Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Microsoft Quantum Development Kit (QDK) udostępnia różne środowiska programistyczne dla programów OpenQASM z integracją Azure Quantum. Z tego artykułu dowiesz się, jak opracowywać i uruchamiać OpenQASM kod w:
- Rozszerzenie QDK w Visual Studio Code (VS Code)
- QDK Pakiet Python w Jupyter Notebook.
Narzędzia deweloperskie, takie jak CodeLends, IntelliSense, autouzupełnianie kodu i debugowanie za pomocą punktów przerwania, są dostępne tylko w rozszerzeniu VS Code. Inne funkcje są dostępne tylko w pakiecie Python. Na przykład można przekazywać elementy wywoływalne Q# i OpenQASM jako obiekty języka Python oraz kompilować programy OpenQASM, które przyjmują dane wejściowe, do formatu QIR.
Wymagania wstępne
Zainstaluj najnowszą wersję programu VS Code
Aby pracować bezpośrednio z plikami OpenQASM , zainstaluj najnowszą wersję QDK rozszerzenia w programie VS Code.
Aby pracować z OpenQASM w Python i Jupyter Notebook, zainstaluj najnowszą wersję rozszerzenia Python oraz rozszerzenie Jupyter w VS Code.
Zainstaluj najnowszą wersję
qdkpakietu Python z dodatkowymijupyterelementami:pip install --upgrade "qdk[jupyter]"
Praca z OpenQASM w VS Code za pomocą rozszerzenia QDK
Aby napisać kod OpenQASM w VS Code, otwórz projekt języka Q# i utwórz plik OpenQASM z rozszerzeniem .qasm. Funkcja QDK automatycznie rozpoznaje plik .qasm jako OpenQASM, a funkcje QDK dla OpenQASM są dostępne w trakcie pisania kodu.
Następujące QDK funkcje są dostępne dla OpenQASM programów w VS Code:
- Uzupełnianie kodu
- Elementy wizualne kodu (Uruchom, Histogram, Oszacuj, Debuguj i Układ)
- Wyróżnianie składni i podstawowe funkcje składni, takie jak dopasowywanie nawiasów klamrowych
- Błąd podczas sprawdzania plików OpenQASM źródłowych
- Debugowanie punktu przerwania i wykonywanie skryptu dla OpenQASM plików źródłowych
- Debugowanie przy użyciu generowania obwodu na żywo
- Integracja z Azure Quantum na potrzeby przesyłania zadań kwantowych
Aby uruchomić program OpenQASM z VS Code, możesz użyć lokalnego symulatora QDK lub przesłać kod jako zadanie do Azure Quantum.
Uruchamianie kodu w symulatorze QDK lokalnym
Aby uruchomić kod OpenQASM w lokalnym rzadkim symulatorze kwantowym w VS Code, otwórz plik .qasm, a następnie wybierz polecenie Uruchom z elementu CodeLens na początku pliku. Dane wyjściowe z programu są wyświetlane w terminalu VS Code .
Uwaga / Notatka
QDK automatycznie próbuje ustawić profil QIR target, który obsługuje dany program. Jeśli profil QIR target nie obsługuje operacji w programie, podczas uruchamiania kodu występują błędy kompilatora OpenQASM . Aby uzyskać więcej informacji na temat profilów target, zobacz Różne typy profilów target w Azure Quantum.
Wbudowane programy przykładowe
Zestaw QDK zawiera kilka wbudowanych przykładów algorytmów kwantowych dla OpenQASM. Aby wypróbować przykładowe algorytmy, wprowadź sample w pustym .qasm pliku. Zostanie wyświetlona lista uzupełniania zawierająca przykładowe algorytmy. Wybierz przykład, a następnie uruchom wygenerowany kod.
Debugowanie lokalnie w programie VS Code
Element QDK zawiera debuger dla programu OpenQASM. Debuger obsługuje debugowanie za pomocą punktów przerwania i może wizualizować stan programu.
Aby uruchomić debuger, wybierz polecenie Debuguj z CodeLens.
W trybie debugowania możesz ustawić punkty przerwania w kodzie, aby ułatwić debugowanie. Stan programu jest wyświetlany w okienku URUCHAMIANIE I DEBUGOWANIE . Możesz na przykład wyświetlić stany zmiennych lokalnych i stany kubitów.
Uruchom swój kod na Azure Quantum
Aby uruchamiać programy OpenQASM na Azure Quantumtargets, musisz mieć obszar roboczy Azure Quantum. Aby utworzyć Azure Quantum obszar roboczy, zobacz Tworzenie obszaru roboczegoAzure Quantum.
Aby przesłać zadania OpenQASM do Azure Quantum z VS Code, musisz połączyć się z obszarem roboczym Azure Quantum. Aby połączyć się z obszarem roboczym z poziomu VS Code, zobacz Jak nawiązać połączenie przy użyciu parametrów połączenia.
Aby przesłać zadanie OpenQASM do Azure Quantum z VS Code, wykonaj następujące kroki:
- Otwórz plik
qasm, który zawiera twój program, w VS Code. - Wybierz ikonę Microsoft Quantum, aby otworzyć panel Microsoft Quantum.
- Rozwiń listę rozwijaną QUANTUM WORKSPACES (OBSZARY ROBOCZE KWANTOWE ) i wybierz swój obszar roboczy.
- Rozwiń listę rozwijaną Dostawcy i wybierz dostawcę, a następnie wybierz target , na którym chcesz uruchomić zadanie. Na przykład prześlij swoje zadanie do
rigetti.svm.simtarget, aby uruchomić program w symulatorze backendowym Rigettiego. Aby uzyskać więcej informacji na temat dostawcy i target dostępności, zobacz Dodawanie lub usuwanie dostawcy w istniejącym obszarze roboczym. - Wybierz ikonę odtwarzania obok target nazwy.
- Aby wysłać zadanie, wprowadź wartości w polach Nazwa zadania i Liczba prób.
Aby wyświetlić czasy i stan zadania, rozwiń listę rozwijaną Zadania i umieść kursor nad nazwą zadania. Aby pobrać wyniki zadania, wybierz ikony histogramu lub tekstu obok nazwy zadania.
Praca z OpenQASM w środowisku Python oraz Jupyter Notebook.
QDK Pakiet Python umożliwia bezpośrednie uruchamianie OpenQASM kodu i przekazywanie OpenQASM obwodów jako operacji do programów języka Q#. Napisz kod OpenQASM jako ciąg Python, a następnie użyj tego ciągu, aby uruchomić, zaimportować lub skompilować kod OpenQASM w środowisku Python.
Uruchom OpenQASM bezpośrednio w Python
Aby uruchomić OpenQASM kod bezpośrednio, użyj run funkcji z modułu qdk.openqasm . Na przykład poniższy kod uruchamia 10 prób na lokalnym komputerowym symulatorze prostego OpenQASM programu z szumem.
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)
Wywołaj OpenQASM program w języku Q#
Możesz użyć funkcji import_openqasm do przechowywania programu OpenQASM jako obiektu Python, a następnie wywołać ten obiekt w dalszej części kodu Python. Na przykład następująca komórka przechowuje obwód OpenQASM w obiekcie Python o nazwie bell:
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")
Gdy bell jest częścią środowiska, możesz uruchomić go bezpośrednio z komórki języka Q#:
%%qsharp
use qs = Qubit[2];
bell(qs)
Możesz również użyć funkcjonalności pakietu QDK z funkcjonalnością bell, takimi jak hałaśliwe symulacje, renderowanie obwodu i generowanie kodu.
Programy sparametryzowane OpenQASM
Poniższa komórka tworzy obwód OpenQASM, który przyjmuje kąt theta jako wejście, a następnie wywołuje obwód jako funkcję 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)
OpenQASM Przekazywanie programu do języka Q#
Za pomocą pakietu QDK Python można bezpośrednio przekazać program OpenQASM do programu w języku Q#. Na przykład poniższy kod tworzy program OpenQASM o nazwie Entangle, a następnie używa Entangle jako operacji w programie 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) }")
Podczas importowania programów Q# i OpenQASM w środowisku Python za pomocą qsharp.eval i import_openqasm, te programy stają się obiektami języka Python, które można wywołać w kodzie Pythona. Na przykład, poniższy kod tworzy program Q# o nazwie TestAntiCorrelation i przekazuje program EntangleOpenQASM do 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)
Kompilowanie programów do QIR
Możesz skompilować kod OpenQASM do QuIR (Quantum Intermediate Representation) za pomocą funkcji compile.
Na przykład następująca komórka kompiluje OpenQASM kod dla sparametryzowanego obwodu do 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)
Uwaga / Notatka
Aby skompilować OpenQASM programy, które pobierają zmienne wejściowe do QIR, należy użyć QDK pakietu Python. Nie można skompilować sparametryzowanych OpenQASM programów do QIR przy użyciu rozszerzenia QDK w VS Code.
Przesyłanie OpenQASM programów do Azure Quantum
Aby przesłać program OpenQASM do uruchomienia na Azure Quantumtarget, skompiluj kod OpenQASM do QIR, a następnie prześlij QIR do uruchomienia na Azure Quantum.
Na przykład skompiluj prosty obwód generujący splątanie do 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)
Aby uruchomić zadanie QIR w usłudze Azure Quantum, połącz się z kwantowym obszarem roboczym i prześlij zadanie do jednego z dostępnych elementów targets w obszarze roboczym. Na przykład prześlij splątanie QIR do uruchomienia w symulatorze zaplecza 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)
Ciągły OpenQASM rozwój w QDK
Wsparcie dla OpenQASM w QDK jest w toku.
Aby uzyskać listę funkcji OpenQASM, które są w trakcie opracowywania w QDK, zobacz Znane ograniczenia i problemy na stronie wiki repozytorium QDK GitHub.