Langkau ke kandungan utama

Jadual ciri OpenQASM 3

Berikut adalah senarai ciri bahasa OpenQASM 3.

Untuk maklumat lanjut mengenai keupayaan ini, lihat Spesifikasi Langsung OpenQASM 3.X.

Kunci:

  • ❌ Tidak disokong

  • 🟑 Sokongan separa

  • βœ… Disokong

Makna tanda "disokong" sepenuhnya bergantung pada lajur:

  • Qiskit SDK: Ciri ini boleh dihurai oleh qiskit.qasm3.loads (dengan menggunakan sambungan qiskit-qasm3-import), direpresentasikan dalam QuantumCircuit, dan dieksport ke OpenQASM 3 oleh qiskit.qasm3.dumps.

  • IBM Quantum Compute Service: Circuit yang mengandungi ciri Qiskit yang berkaitan boleh dilaksanakan dengan jayanya pada perkakasan melalui IBM Quantum Compute Service.

Makna "sokongan separa" biasanya bergantung pada nota yang dipautkan.

nota

Kaedah paling biasa untuk menghantar litar ke IBM Quantum Compute Service adalah dengan mencipta litar dalam antara muka ruang-Python ke Qiskit SDK. Litar yang dibina dan dihantar dengan cara ini tidak perlu dimuatkan dari fail OpenQASM 3 ke dalam Qiskit SDK.

Jika anda tidak menggunakan OpenQASM 3 secara langsung, anda boleh menggunakan ciri yang disokong untuk representasi dalam Qiskit SDK, eksport ke OpenQASM 3, dan penghantaran ke IBM Quantum Compute Service dengan selamat. Ini termasuk ciri yang tidak boleh dimuatkan oleh Qiskit SDK dari OpenQASM 3.

Ciri OpenQASM 3Ciri Qiskit SDKQiskit SDKIBM Quantum Compute ServiceNota
ulasanβœ…βœ…1
QASM vstringβœ…βœ…1
include🟑❌1, 7
nama unicodeβœ…βœ…
qubitQubit dan QuantumRegisterβœ…πŸŸ‘2
bitClbit dan ClassicalRegisterβœ…βœ…3
boolexpr.Var dan ungkapan klasikπŸŸ‘βœ…4
intβŒβœ…4
uintexpr.Var dan ungkapan klasikπŸŸ‘βœ…4
floatexpr.Var dan ungkapan klasik🟑🟑4
angleTersirat, sebagai parameter gate❌🟑4
complex❌❌4
const❌❌4
pi/Ο€/tau/Ο„/euler/ℇDilipat-pemalar ke dalam parameter gateβœ…βœ…
Pengaliasan: letDaftar kuantum dan klasik🟑❌5
penggabungan daftarDaftar kuantum dan klasik🟑❌5
castingUngkapan klasik expr.Cast🟑🟑4
duration❌❌
durationof❌❌
ns/Β΅s/us/ms/s/dtTempoh delay dan boxβœ…βœ…6
stretchexpr.Stretch🟑🟑4, 6
delayDelay/QuantumCircuit.delayβœ…βœ…6
barrierBarrier/QuantumCircuit.barrierβœ…βœ…
boxBoxOp/QuantumCircuit.boxβœ…βŒ6
Built-in UUGate/QuantumCircuit.uβœ…βœ…
gate🟑🟑7
gphaseQuantumCircuit.global_phase🟑❌7
ctrl @/ negctrl @AnnotatedOperation🟑❌7
inv @AnnotatedOperation🟑❌7
pow(k) @AnnotatedOperation🟑❌7
resetReset/QuantumCircuit.resetβœ…βœ…
measureMeasure/QuantumCircuit.measureβœ…βœ…
operasi bitπŸŸ‘βœ…4
operasi booleanπŸŸ‘βœ…4
ungkapan aritmetik🟑🟑4
perbandinganπŸŸ‘βœ…4
ifQuantumCircuit.if_testβœ…βœ…8
elseQuantumCircuit.if_testβœ…βœ…8
else ifQuantumCircuit.if_testβœ…βŒ8
gelung forQuantumCircuit.for_loop🟑❌8
gelung whileQuantumCircuit.while_loopβœ…βŒ8
continueQuantumCircuit.continue_loop🟑❌8
breakQuantumCircuit.break_loop🟑❌8
return❌❌
extern❌❌
subrutin def (klasik)❌❌
subrutin def (kuantum)❌❌
inputQuantumCircuit.add_inputβœ…πŸŸ‘4, 9
output❌❌

Nota​

  1. Ciri-ciri program OpenQASM 3 ini tidak memberi kesan ke atas pelaksanaan dan Qiskit membuangnya sebagai sebahagian daripada menghurai fail. Fail yang menggunakannya boleh dihantar tetapi tidak akan memberi kesan. Untuk fail include, stdgates.inc kini disokong sebagai input ke Qiskit, dan pelaksanaan backend sentiasa memerlukan litar yang telah dikompil ke Seni Bina Set Arahan (ISA) backend, di mana fail include tidak relevan.
  1. Qiskit SDK menyokong penghuraian dan pengeksportan fail OpenQASM 3 dengan sebarang deklarasi qubit. Untuk pelaksanaan pada perkakasan, hanya litar yang ditakrifkan dalam sebutan qubit perkakasan (contohnya, $0) yang sah. Qiskit SDK secara automatik mengeluarkan OpenQASM 3 dalam sebutan pengecam qubit-perkakasan yang disokong jika litar telah dikompil untuk backend dengan maklumat tataletak.
  1. Deklarasi pemboleh ubah bertaip bit dan bit[n] dalam Qiskit SDK sepadan dengan deklarasi Clbit dan ClassicalRegister.
  1. Sehingga Julai 2025, Qiskit SDK boleh merepresentasikan pemboleh ubah tempatan bagi set jenis terhad, boleh merepresentasikan banyak operasi runtime pada objek ini, dan menyokong pengeksportan ke OpenQASM 3. Walau bagaimanapun, Qiskit SDK (melalui qiskit-qasm3-import v0.6.0) tidak menyokong penghuraian fail OpenQASM 3 yang mengandungi deklarasi pemboleh ubah, dan mempunyai sokongan yang sangat terhad untuk menghurai ungkapan pemboleh ubah. Secara umum, kebanyakan yang boleh direpresentasikan Qiskit dalam sistem ungkapannya boleh dilaksanakan pada perkakasan litar dinamik yang sesuai, walaupun ungkapan itu belum boleh dihurai oleh Qiskit SDK. Lihat dokumentasi Qiskit bagi modul qiskit.circuit.classical untuk maklumat terkini.
  1. Qiskit SDK boleh merepresentasikan pengaliasan daftar untuk daftar kuantum dan klasik, tetapi penggunaan pengaliasan daftar klasik sangat tidak digalakkan. Kebanyakan ungkapan pada daftar klasik tidak berfungsi dengan alias, dan daftar klasik teralias tidak disokong untuk pelaksanaan pada perkakasan. Penghurai OpenQASM 3 Qiskit boleh menyelesaikan pernyataan alias let yang mengikat hasil penggabungan daftar.
  1. Qiskit SDK menyokong kelewatan eksplisit melalui QuantumCircuit.delay, dan kotak litar (QuantumCircuit.box) juga boleh mempunyai tempoh eksplisit. Tempoh ini boleh merangkumi ungkapan klasik pemboleh ubah stretch. Qiskit SDK (sehingga Julai 2025 melalui qiskit-qasm3-import v0.6.0) tidak menyokong penghuraian deklarasi jenis duration atau jenis stretch dari fail OpenQASM 3. Perkakasan mempunyai sokongan terhad untuk tempoh termasuk stretch.
  1. Litar mesti dikompil ke ISA backend untuk dijalankan pada perkakasan IBM. Ini menghalang definisi gate tersuai dan konstruk peringkat lebih tinggi seperti pengubah gate (seperti inv @) daripada sah untuk pelaksanaan pada perkakasan secara verbatim, tetapi proses transpile menyelesaikannya menjadi litar ISA yang sah. Qiskit SDK (sehingga Julai 2025, melalui qiskit-qasm3-import v0.6.0) akan menilai pengubah gate dengan segera semasa penghuraian, jadi ini tidak akan ketara dalam QuantumCircuit yang terhasil, berpotensi dengan kos runtime.
  1. Qiskit SDK boleh merepresentasikan aliran kawalan berstruktur dan mengeksportnya ke OpenQASM 3. Pernyataan continue dan break secara teknikal boleh direpresentasikan oleh Qiskit, tetapi tidak disokong dengan baik walaupun dalam Qiskit SDK. Gelung for dalam Qiskit v2.1.0 tidak disokong dengan baik. Aliran kawalan bersarang (seperti if di dalam if lain, atau pernyataan else if) tidak layak untuk pelaksanaan pada perkakasan.
  1. Qiskit SDK menyokong pengisytiharan mana-mana jenis klasik yang disokong sebagai pemboleh ubah input pada litar. Pemboleh ubah sedemikian tidak layak untuk pelaksanaan pada perkakasan pada masa ini, dan tidak boleh dimuatkan oleh pengimport OpenQASM 3 Qiskit. Objek Parameter yang tidak terikat yang wujud dalam QuantumCircuit dieksport sebagai pemboleh ubah input float[64]. Pilihan konfigurasi runtime tertentu boleh membolehkan pelaksanaan litar sedemikian pada beberapa backend.

Langkah seterusnya​

Cadangan