Tabel fitur OpenQASM 3
Berikut adalah daftar fitur bahasa OpenQASM 3.
Untuk detail lebih lanjut tentang kemampuan-kemampuan ini, lihat Spesifikasi Langsung OpenQASM 3.X.
Keterangan:
- โ Tidak didukung
- ๐ก Dukungan sebagian
- โ Didukung
Arti dari tanda "didukung" penuh bergantung pada kolomnya:
-
Qiskit SDK: Fitur ini dapat diparse oleh
qiskit.qasm3.loads(menggunakan ekstensiqiskit-qasm3-import), direpresentasikan dalam sebuahQuantumCircuit, dan diekspor ke OpenQASM 3 olehqiskit.qasm3.dumps. -
IBM Qiskit Runtime: Circuit yang mengandung fitur Qiskit yang bersangkutan dapat dieksekusi dengan sukses pada perangkat keras melalui IBMยฎ Qiskit Runtime.
Arti dari "dukungan sebagian" biasanya bergantung pada catatan yang ditautkan.
Cara paling umum untuk mengirimkan circuit ke IBM Qiskit Runtime adalah dengan membuat circuit di antarmuka Python-space ke Qiskit SDK. Circuit yang dibuat dan dikirimkan dengan cara ini tidak perlu dimuat dari file OpenQASM 3 ke Qiskit SDK.
Jika kamu tidak menggunakan OpenQASM 3 secara langsung, kamu bisa dengan aman menggunakan fitur yang didukung untuk representasi di Qiskit SDK, ekspor ke OpenQASM 3, dan pengiriman ke IBM Qiskit Runtime. Ini termasuk fitur yang tidak dapat dimuat oleh Qiskit SDK dari OpenQASM 3.
| Fitur OpenQASM 3 | Fitur Qiskit SDK | Qiskit SDK | IBM Qiskit Runtime | Catatan |
|---|---|---|---|---|
| komentar | โ | โ | 1 | |
| QASM vstring | โ | โ | 1 | |
include | ๐ก | โ | 1, 7 | |
| nama unicode | โ | โ | ||
qubit | Qubit dan QuantumRegister | โ | ๐ก | 2 |
bit | Clbit dan ClassicalRegister | โ | โ | 3 |
bool | expr.Var dan ekspresi klasikal | ๐ก | โ | 4 |
int | โ | โ | 4 | |
uint | expr.Var dan ekspresi klasikal | ๐ก | โ | 4 |
float | expr.Var dan ekspresi klasikal | ๐ก | ๐ก | 4 |
angle | Implisit, sebagai parameter Gate | โ | ๐ก | 4 |
complex | โ | โ | 4 | |
const | โ | โ | 4 | |
pi/ฯ/tau/ฯ/euler/โ | Dilipat menjadi konstanta ke parameter Gate | โ | โ | |
| Aliasing: let | Register quantum dan klasikal | ๐ก | โ | 5 |
| penggabungan register | Register quantum dan klasikal | ๐ก | โ | 5 |
| casting | Ekspresi klasikal expr.Cast | ๐ก | ๐ก | 4 |
duration | โ | โ | ||
durationof | โ | โ | ||
ns/ยตs/us/ms/s/dt | Durasi 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 | |
| ekspresi aritmetika | ๐ก | ๐ก | 4 | |
| perbandingan | ๐ก | โ | 4 | |
if | QuantumCircuit.if_test | โ | โ | 8 |
else | QuantumCircuit.if_test | โ | โ | 8 |
else if | QuantumCircuit.if_test | โ | โ | 8 |
loop for | QuantumCircuit.for_loop | ๐ก | โ | 8 |
loop while | QuantumCircuit.while_loop | โ | โ | 8 |
continue | QuantumCircuit.continue_loop | ๐ก | โ | 8 |
break | QuantumCircuit.break_loop | ๐ก | โ | 8 |
return | โ | โ | ||
extern | โ | โ | ||
subrutin def (klasikal) | โ | โ | ||
subrutin def (quantum) | โ | โ | ||
input | QuantumCircuit.add_input | โ | ๐ก | 4, 9 |
output | โ | โ |
Catatanโ
- Fitur-fitur program OpenQASM 3 ini tidak berdampak pada eksekusi dan Qiskit akan menghapusnya
sebagai bagian dari proses parsing file. File yang menggunakannya bisa dikirimkan tetapi tidak akan
berpengaruh. Untuk file
include,stdgates.incsaat ini didukung sebagai input ke Qiskit, dan eksekusi backend selalu mengharuskan circuit sudah dikompilasi ke Instruction Set Architecture (ISA) backend, di mana fileincludetidak relevan.
- Qiskit SDK mendukung parsing dan dumping file OpenQASM 3 dengan deklarasi
qubitapa pun. Untuk eksekusi pada perangkat keras, hanya circuit yang didefinisikan dalam Qubit perangkat keras (misalnya,$0) yang valid. Qiskit SDK secara otomatis menghasilkan output OpenQASM 3 dalam bentuk identifier Qubit perangkat keras yang didukung jika circuit sudah di-transpile untuk Backend dengan informasi layout.
- Deklarasi variabel bertipe
bitdanbit[n]di Qiskit SDK berkorespondensi dengan deklarasiClbitdanClassicalRegister.
- Per Juli 2025, Qiskit SDK dapat merepresentasikan variabel lokal dari sejumlah tipe terbatas, dapat
merepresentasikan banyak operasi runtime pada objek-objek ini, dan mendukung output ke OpenQASM 3.
Namun, Qiskit SDK (melalui
qiskit-qasm3-importv0.6.0) tidak mendukung parsing file OpenQASM 3 yang mengandung deklarasi variabel, dan hanya memiliki dukungan sangat terbatas untuk parsing ekspresi variabel. Secara umum, sebagian besar yang bisa direpresentasikan Qiskit dalam sistem ekspresinya dapat dieksekusi pada perangkat keras circuit dinamis yang sesuai, meskipun ekspresi tersebut belum bisa diparse oleh Qiskit SDK. Lihat dokumentasi Qiskit untuk modulqiskit.circuit.classicaluntuk informasi terbaru.
- Qiskit SDK dapat merepresentasikan aliasing register untuk register quantum maupun klasikal, tetapi
sangat tidak disarankan menggunakan aliasing register klasikal. Sebagian besar ekspresi pada register klasikal
tidak bekerja dengan alias, dan register klasikal yang di-alias tidak didukung untuk
eksekusi pada perangkat keras. Parser OpenQASM 3 Qiskit dapat menyelesaikan pernyataan alias
letyang mengikat hasil penggabungan register.
- Qiskit SDK mendukung penundaan eksplisit via
QuantumCircuit.delay, dan kotak circuit (QuantumCircuit.box) juga bisa memiliki durasi eksplisit. Durasi-durasi ini dapat mencakup ekspresi klasikal dari variabelstretch. Qiskit SDK (per Juli 2025 melaluiqiskit-qasm3-importv0.6.0) tidak mendukung parsing deklarasi bertipedurationataustretchdari file OpenQASM 3. Perangkat keras memiliki dukungan terbatas untuk durasi yang mencakupstretch.
- Circuit harus di-transpile ke ISA backend untuk berjalan di perangkat keras IBM. Ini mengecualikan
definisi
gatekustom dan konstruksi tingkat tinggi seperti modifier Gate (sepertiinv @) agar tidak valid untuk eksekusi langsung di perangkat keras, tetapi prosestranspileakan menyelesaikannya menjadi circuit ISA yang valid. Qiskit SDK (per Juli 2025, melaluiqiskit-qasm3-importv0.6.0) akan mengevaluasi modifier Gate secara eagerly selama parsing, sehingga ini tidak akan terlihat dalamQuantumCircuityang dihasilkan, dan berpotensi menimbulkan biaya runtime.
- Qiskit SDK dapat merepresentasikan alur kontrol terstruktur dan mengekspornya ke OpenQASM 3. Pernyataan
continuedanbreaksecara teknis dapat direpresentasikan oleh Qiskit, tetapi tidak didukung dengan baik bahkan di dalam Qiskit SDK. Loopfordi Qiskit v2.1.0 tidak didukung dengan baik. Alur kontrol bersarang (sepertiifdi dalamiflain, atau pernyataanelse if) tidak memenuhi syarat untuk eksekusi di perangkat keras.
- Qiskit SDK mendukung deklarasi tipe klasikal apa pun yang didukung sebagai variabel
inputpada circuit. Variabel-variabel tersebut saat ini tidak memenuhi syarat untuk eksekusi di perangkat keras, dan tidak dapat dimuat oleh importer OpenQASM 3 Qiskit. ObjekParameteryang tidak terikat yang ada diQuantumCircuitdiekspor sebagai variabelinput float[64]. Opsi konfigurasi runtime tertentu dapat memungkinkan eksekusi circuit tersebut di beberapa backend.
Langkah berikutnyaโ
- Pelajari cara menghasilkan kode OpenQASM menggunakan IBM Quantum Composer.
- Lihat referensi OpenQASM 3 Qiskit API.
- Lihat referensi OpenQASM 2 Qiskit API.
- Tinjau topik Verifikasi programmu.
- Kunjungi Spesifikasi Langsung OpenQASM.