Wprowadzenie do OpenQASM
OpenQASM (otwarty kwantowy język asemblera), niezależny od maszyny interfejs programistyczny zgodny z QPU IBM®, to imperatywny język programowania służący do opisu Circuit kwantowych. OpenQASM wykorzystuje model Circuit kwantowego do wyrażania programów kwantowych jako uporządkowanych sekwencji sparametryzowanych operacji (takich jak Gate'y, pomiary i resety) oraz klasycznych obliczeń w czasie rzeczywistym. Oprócz algorytmów kwantowych, OpenQASM może opisywać Circuit przeznaczone do charakteryzowania, walidacji lub debugowania procesorów kwantowych.
Wraz z rozwojem potrzeb związanych z QPU, lista funkcji OpenQASM była stopniowo rozszerzana; najnowsza wersja, OpenQASM 3, obejmuje rozszerzenia takie jak klasyczna kontrola przepływu z feed-forward, modyfikatory Gate'ów oraz implementacje pulsowe.
OpenQASM jest wyborem dla różnych grup odbiorców ze względu na swoją wszechstronność. Wprowadzenie do artykułu o OpenQASM 31 podaje przykłady:
"Chociaż OpenQASM nie jest językiem wysokiego poziomu, wielu użytkowników chciałoby pisać proste Circuit kwantowe ręcznie, używając ekspresywnego języka dziedzinowego. Badacze zajmujący się kompilacją Circuit potrzebują informacji wysokiego poziomu zapisanych w reprezentacjach pośrednich, aby wspierać algorytmy optymalizacji i syntezy. Eksperymentatorzy preferują wygodę pisania Circuit na stosunkowo wysokim poziomie, ale często muszą ręcznie modyfikować opisy Gate'ów na poziomie czasowym lub pulsowym w różnych miejscach Circuit. Inżynierowie sprzętu projektujący klasyczne kontrolery i generatory przebiegów preferują języki, które są praktyczne do skompilowania przy danych ograniczeniach sprzętowych i które jawnie ujawniają strukturę Circuit, z której kontrolery mogą korzystać."
OpenQASM jest wspólnym formatem wymiany między niezależnymi narzędziami programistycznymi do obliczeń kwantowych. Dla programistów, którzy preferują jedno narzędzie do budowania Circuit, inne do Transpilacji i tak dalej, OpenQASM jest lingua franca pełniącą rolę pomostu między nimi.
Qiskit SDK udostępnia sposoby konwersji między OpenQASM a klasą QuantumCircuit (instrukcje znajdziesz w artykułach OpenQASM 2 i Qiskit oraz OpenQASM 3 i Qiskit).
Więcej informacji znajdziesz w aktualnej specyfikacji OpenQASM.
Przykład kodu OpenQASM: stan kota
OPENQASM 3;
include "stdgates.inc";
const n = 3; // number of qubits
qubit[n] q; // a register 'q' of n qubits
bit[n] c; // a register 'c' of n classical bits
h q[0]; // Hadamard
for k in [0:n-1] {
cnot q[k], q[k+1]; // Controlled-NOT from control qubit q[k] to target qubit q[k+1]
}
c = measure q; // measure quantum register
Następne kroki
- Dowiedz się, jak generować kod OpenQASM, korzystając z przewodnika IBM Quantum Composer.
- Zapoznaj się z tabelą funkcji OpenQASM 3.
- Przeczytaj dokumentację API OpenQASM 3 dla Qiskit.
- Przeczytaj dokumentację API OpenQASM 2 dla Qiskit.
- Odwiedź aktualną specyfikację OpenQASM.