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 sambunganqiskit-qasm3-import), direpresentasikan dalamQuantumCircuit, dan dieksport ke OpenQASM 3 olehqiskit.qasm3.dumps. -
IBM Qiskit Runtime: Litar yang mengandungi ciri Qiskit yang berkaitan boleh dilaksanakan dengan jayanya pada perkakasan melalui IBMยฎ Qiskit Runtime.
Makna "sokongan separa" biasanya bergantung pada nota yang dipautkan.
Kaedah paling biasa untuk menghantar litar ke IBM Qiskit Runtime 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 Qiskit Runtime dengan selamat. Ini termasuk ciri yang tidak boleh dimuatkan oleh Qiskit SDK dari OpenQASM 3.
| Ciri OpenQASM 3 | Ciri Qiskit SDK | Qiskit SDK | IBM Qiskit Runtime | Nota |
|---|---|---|---|---|
| ulasan | โ | โ | 1 | |
| QASM vstring | โ | โ | 1 | |
include | ๐ก | โ | 1, 7 | |
| nama unicode | โ | โ | ||
qubit | Qubit dan QuantumRegister | โ | ๐ก | 2 |
bit | Clbit dan ClassicalRegister | โ | โ | 3 |
bool | expr.Var dan ungkapan klasik | ๐ก | โ | 4 |
int | โ | โ | 4 | |
uint | expr.Var dan ungkapan klasik | ๐ก | โ | 4 |
float | expr.Var dan ungkapan klasik | ๐ก | ๐ก | 4 |
angle | Tersirat, sebagai parameter gate | โ | ๐ก | 4 |
complex | โ | โ | 4 | |
const | โ | โ | 4 | |
pi/ฯ/tau/ฯ/euler/โ | Dilipat-pemalar ke dalam parameter gate | โ | โ | |
| Pengaliasan: let | Daftar kuantum dan klasik | ๐ก | โ | 5 |
| penggabungan daftar | Daftar kuantum dan klasik | ๐ก | โ | 5 |
| penghantaran | Ungkapan klasik expr.Cast | ๐ก | ๐ก | 4 |
duration | โ | โ | ||
durationof | โ | โ | ||
ns/ยตs/us/ms/s/dt | Tempoh delay dan box | โ | โ | 6 |
stretch | expr.Stretch | ๐ก | ๐ก | 4, 6 |
delay | Delay/QuantumCircuit.delay | โ | โ | 6 |
barrier | Barrier/QuantumCircuit.barrier | โ | โ | |
box | BoxOp/QuantumCircuit.box | โ | โ | 6 |
Built-in U | UGate/QuantumCircuit.u | โ | โ | |
gate | ๐ก | ๐ก | 7 | |
gphase | QuantumCircuit.global_phase | ๐ก | โ | 7 |
ctrl @/ negctrl @ | AnnotatedOperation | ๐ก | โ | 7 |
inv @ | AnnotatedOperation | ๐ก | โ | 7 |
pow(k) @ | AnnotatedOperation | ๐ก | โ | 7 |
reset | Reset/QuantumCircuit.reset | โ | โ | |
measure | Measure/QuantumCircuit.measure | โ | โ | |
| operasi bit | ๐ก | โ | 4 | |
| operasi boolean | ๐ก | โ | 4 | |
| ungkapan aritmetik | ๐ก | ๐ก | 4 | |
| perbandingan | ๐ก | โ | 4 | |
if | QuantumCircuit.if_test | โ | โ | 8 |
else | QuantumCircuit.if_test | โ | โ | 8 |
else if | QuantumCircuit.if_test | โ | โ | 8 |
gelung for | QuantumCircuit.for_loop | ๐ก | โ | 8 |
gelung while | QuantumCircuit.while_loop | โ | โ | 8 |
continue | QuantumCircuit.continue_loop | ๐ก | โ | 8 |
break | QuantumCircuit.break_loop | ๐ก | โ | 8 |
return | โ | โ | ||
extern | โ | โ | ||
subrutin def (klasik) | โ | โ | ||
subrutin def (kuantum) | โ | โ | ||
input | QuantumCircuit.add_input | โ | ๐ก | 4, 9 |
output | โ | โ |
Notaโ
- 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.inckini disokong sebagai input ke Qiskit, dan pelaksanaan backend sentiasa memerlukan litar yang telah dikompil ke Seni Bina Set Arahan (ISA) backend, di mana failincludetidak relevan.
- Qiskit SDK menyokong penghuraian dan pembuangan 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.
- Deklarasi pemboleh ubah bertaip
bitdanbit[n]dalam Qiskit SDK sepadan dengan deklarasiClbitdanClassicalRegister.
- 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-importv0.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 modulqiskit.circuit.classicaluntuk maklumat terkini.
- 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
letyang mengikat hasil penggabungan daftar.
- 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 ubahstretch. Qiskit SDK (sehingga Julai 2025 melaluiqiskit-qasm3-importv0.6.0) tidak menyokong penghuraian deklarasi jenisdurationatau jenisstretchdari fail OpenQASM 3. Perkakasan mempunyai sokongan terhad untuk tempoh termasukstretch.
- Litar mesti dikompil ke ISA backend untuk dijalankan pada perkakasan IBM. Ini menghalang
definisi
gatetersuai dan konstruk peringkat lebih tinggi seperti pengubah gate (sepertiinv @) daripada sah untuk pelaksanaan pada perkakasan secara verbatim, tetapi prosestranspilemenyelesaikannya menjadi litar ISA yang sah. Qiskit SDK (sehingga Julai 2025, melaluiqiskit-qasm3-importv0.6.0) akan menilai pengubah gate dengan segera semasa penghuraian, jadi ini tidak akan ketara dalamQuantumCircuityang terhasil, berpotensi dengan kos runtime.
- Qiskit SDK boleh merepresentasikan aliran kawalan berstruktur dan mengeksportnya ke OpenQASM 3. Pernyataan
continuedanbreaksecara teknikal boleh direpresentasikan oleh Qiskit, tetapi tidak disokong dengan baik walaupun dalam Qiskit SDK. Gelungfordalam Qiskit v2.1.0 tidak disokong dengan baik. Aliran kawalan bersarang (sepertiifdi dalamiflain, atau pernyataanelse if) tidak layak untuk pelaksanaan pada perkakasan.
- Qiskit SDK menyokong pengisytiharan mana-mana jenis klasik yang disokong sebagai pemboleh ubah
inputpada litar. Pemboleh ubah sedemikian tidak layak untuk pelaksanaan pada perkakasan pada masa ini, dan tidak boleh dimuatkan oleh pengimport OpenQASM 3 Qiskit. ObjekParameteryang tidak terikat yang wujud dalamQuantumCircuitdieksport sebagai pemboleh ubahinput float[64]. Pilihan konfigurasi runtime tertentu boleh membolehkan pelaksanaan litar sedemikian pada beberapa backend.
Langkah seterusnyaโ
- Pelajari cara menjana kod OpenQASM menggunakan IBM Quantum Composer.
- Lihat rujukan OpenQASM 3 Qiskit API.
- Lihat rujukan OpenQASM 2 Qiskit API.
- Semak topik Sahkan program anda.
- Lawati Spesifikasi Langsung OpenQASM.