Tabel fitur OpenQASM 3
Berikut adalah daftar fitur bahasa OpenQASM 3.
Untuk detail lebih lanjut tentang kemampuan-kemampuan ini, lihat Spesifikasi Live 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 Quantum Compute Service: Circuit yang mengandung fitur Qiskit yang bersangkutan dapat dieksekusi dengan sukses pada perangkat keras melalui IBM Quantum Compute Service.
Arti dari "dukungan sebagian" biasanya bergantung pada catatan yang ditautkan.
Cara paling umum untuk mengirimkan circuit ke IBM Quantum Compute Service 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 Quantum Compute Service. Ini termasuk fitur yang tidak dapat dimuat oleh Qiskit SDK dari OpenQASM 3.
| Fitur OpenQASM 3 | Fitur Qiskit SDK | Qiskit SDK | IBM Quantum Compute Service | Catatan |
|---|---|---|---|---|
| comments | β | β | 1 | |
| QASM vstring | β | β | 1 | |
include | π‘ | β | 1, 7 | |
| unicode names | β | β | ||
qubit | Qubit and QuantumRegister | β | π‘ | 2 |
bit | Clbit and ClassicalRegister | β | β | 3 |
bool | expr.Var and classical expressions | π‘ | β | 4 |
int | β | β | 4 | |
uint | expr.Var and classical expressions | π‘ | β | 4 |
float | expr.Var and classical expressions | π‘ | π‘ | 4 |
angle | Implicit, as gate parameters | β | π‘ | 4 |
complex | β | β | 4 | |
const | β | β | 4 | |
pi/Ο/tau/Ο/euler/β | Constant-folded into gate parameters | β | β | |
| Aliasing: let | Quantum and classical registers | π‘ | β | 5 |
| register concatenation | Quantum and classical registers | π‘ | β | 5 |
| casting | expr.Cast classical expressions | π‘ | π‘ | 4 |
duration | β | β | ||
durationof | β | β | ||
ns/Β΅s/us/ms/s/dt | Durations of delay and 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 | β | β | |
| bit operations | π‘ | β | 4 | |
| boolean operations | π‘ | β | 4 | |
| arithmetic expressions | π‘ | π‘ | 4 | |
| comparisons | π‘ | β | 4 | |
if | QuantumCircuit.if_test | β | β | 8 |
else | QuantumCircuit.if_test | β | β | 8 |
else if | QuantumCircuit.if_test | β | β | 8 |
for loops | QuantumCircuit.for_loop | π‘ | β | 8 |
while loops | QuantumCircuit.while_loop | β | β | 8 |
continue | QuantumCircuit.continue_loop | π‘ | β | 8 |
break | QuantumCircuit.break_loop | π‘ | β | 8 |
return | β | β | ||
extern | β | β | ||
def subroutines (classical) | β | β | ||
def subroutines (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. Akibatnya, definisi
gatekustom dan konstruksi tingkat tinggi seperti modifier Gate (misalnyainv @) tidak valid untuk dieksekusi apa adanya di perangkat keras, tetapi prosestranspileakan menyelesaikannya menjadi circuit ISA yang valid. Qiskit SDK (per Juli 2025, melaluiqiskit-qasm3-importv0.6.0) akan langsung mengevaluasi modifier Gate saat 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 Live OpenQASM.