Přeskočit na hlavní obsah

Úvod do OpenQASM

OpenQASM (otevřený jazyk pro kvantové sestavení), strojově nezávislé programovací rozhraní kompatibilní s IBM® QPU, je imperativní programovací jazyk pro popis kvantových Circuit. OpenQASM využívá model kvantového Circuit k vyjádření kvantových programů jako uspořádaných sekvencí parametrizovaných operací (jako jsou Gate, měření a resety) a klasické výpočty v reálném čase. Kromě kvantových algoritmů dokáže OpenQASM popisovat Circuit určené ke charakterizaci, ověření nebo ladění kvantových procesorů.

Jak se potřeby vývoje QPU vyvíjely, rozrůstal se i seznam funkcí OpenQASM; nejnovější verze, OpenQASM 3, zahrnuje rozšíření včetně klasického řízení toku s dopřednou zpětnou vazbou, modifikátorů Gate a implementací pulzů.

OpenQASM je volbou pro různé skupiny uživatelů díky své univerzálnosti. Úvod k článku o OpenQASM 31 uvádí příklady:

„Přestože OpenQASM není vysokoúrovňový jazyk, mnoho uživatelů chce psát jednoduché kvantové Circuit ručně pomocí výrazného doménově specifického jazyka. Výzkumníci, kteří studují kompilaci Circuit, potřebují vysokoúrovňové informace zaznamenané v mezilehlých reprezentacích, aby mohli informovat optimalizační a syntézní algoritmy. Experimentátoři upřednostňují pohodlí psaní Circuit na relativně vysoké úrovni, ale často potřebují ručně upravovat časování nebo popisy Gate na úrovni pulzů na různých místech v Circuit. Hardwaroví inženýři, kteří navrhují klasické řadiče a generátory průběhů, preferují jazyky, které je praktické kompilovat s ohledem na hardwarová omezení a které explicitně vyjadřují strukturu Circuit, jíž mohou řadiče využít."

OpenQASM je společným výměnným formátem mezi nezávislými nástroji pro kvantový software. Pro vývojáře, kteří preferují jeden nástroj pro sestavení Circuit, jiný pro Transpiler a tak dále, je OpenQASM lingua franca, která slouží jako most mezi nimi.

Qiskit SDK poskytuje způsoby, jak převádět mezi OpenQASM a třídou QuantumCircuit (pokyny najdeš v OpenQASM 2 a Qiskit a OpenQASM 3 a Qiskit).

Více informací najdeš v živé specifikaci OpenQASM.

Příklad kódu OpenQASM: cat state


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

Další kroky

Doporučení

Footnotes

  1. Andrew W. Cross et al. "OpenQASM 3: A broader and deeper quantum assembly language," ACM Transactions on Quantum Computing, Volume 3, Issue 3 (2022). https://doi.org/10.48550/arXiv.2104.14722