Lewati ke konten utama

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 ekstensi qiskit-qasm3-import), direpresentasikan dalam sebuah QuantumCircuit, dan diekspor ke OpenQASM 3 oleh qiskit.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.

catatan

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 3Fitur Qiskit SDKQiskit SDKIBM Qiskit RuntimeCatatan
komentarโœ…โœ…1
QASM vstringโœ…โœ…1
include๐ŸŸกโŒ1, 7
nama unicodeโœ…โœ…
qubitQubit dan QuantumRegisterโœ…๐ŸŸก2
bitClbit dan ClassicalRegisterโœ…โœ…3
boolexpr.Var dan ekspresi klasikal๐ŸŸกโœ…4
intโŒโœ…4
uintexpr.Var dan ekspresi klasikal๐ŸŸกโœ…4
floatexpr.Var dan ekspresi klasikal๐ŸŸก๐ŸŸก4
angleImplisit, sebagai parameter GateโŒ๐ŸŸก4
complexโŒโŒ4
constโŒโŒ4
pi/ฯ€/tau/ฯ„/euler/โ„‡Dilipat menjadi konstanta ke parameter Gateโœ…โœ…
Aliasing: letRegister quantum dan klasikal๐ŸŸกโŒ5
penggabungan registerRegister quantum dan klasikal๐ŸŸกโŒ5
castingEkspresi klasikal expr.Cast๐ŸŸก๐ŸŸก4
durationโŒโŒ
durationofโŒโŒ
ns/ยตs/us/ms/s/dtDurasi 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
ekspresi aritmetika๐ŸŸก๐ŸŸก4
perbandingan๐ŸŸกโœ…4
ifQuantumCircuit.if_testโœ…โœ…8
elseQuantumCircuit.if_testโœ…โœ…8
else ifQuantumCircuit.if_testโœ…โŒ8
loop forQuantumCircuit.for_loop๐ŸŸกโŒ8
loop whileQuantumCircuit.while_loopโœ…โŒ8
continueQuantumCircuit.continue_loop๐ŸŸกโŒ8
breakQuantumCircuit.break_loop๐ŸŸกโŒ8
returnโŒโŒ
externโŒโŒ
subrutin def (klasikal)โŒโŒ
subrutin def (quantum)โŒโŒ
inputQuantumCircuit.add_inputโœ…๐ŸŸก4, 9
outputโŒโŒ

Catatanโ€‹

  1. 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.inc saat ini didukung sebagai input ke Qiskit, dan eksekusi backend selalu mengharuskan circuit sudah dikompilasi ke Instruction Set Architecture (ISA) backend, di mana file include tidak relevan.
  1. Qiskit SDK mendukung parsing dan dumping file OpenQASM 3 dengan deklarasi qubit apa 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.
  1. Deklarasi variabel bertipe bit dan bit[n] di Qiskit SDK berkorespondensi dengan deklarasi Clbit dan ClassicalRegister.
  1. 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-import v0.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 modul qiskit.circuit.classical untuk informasi terbaru.
  1. 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 let yang mengikat hasil penggabungan register.
  1. 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 variabel stretch. Qiskit SDK (per Juli 2025 melalui qiskit-qasm3-import v0.6.0) tidak mendukung parsing deklarasi bertipe duration atau stretch dari file OpenQASM 3. Perangkat keras memiliki dukungan terbatas untuk durasi yang mencakup stretch.
  1. Circuit harus di-transpile ke ISA backend untuk berjalan di perangkat keras IBM. Ini mengecualikan definisi gate kustom dan konstruksi tingkat tinggi seperti modifier Gate (seperti inv @) agar tidak valid untuk eksekusi langsung di perangkat keras, tetapi proses transpile akan menyelesaikannya menjadi circuit ISA yang valid. Qiskit SDK (per Juli 2025, melalui qiskit-qasm3-import v0.6.0) akan mengevaluasi modifier Gate secara eagerly selama parsing, sehingga ini tidak akan terlihat dalam QuantumCircuit yang dihasilkan, dan berpotensi menimbulkan biaya runtime.
  1. Qiskit SDK dapat merepresentasikan alur kontrol terstruktur dan mengekspornya ke OpenQASM 3. Pernyataan continue dan break secara teknis dapat direpresentasikan oleh Qiskit, tetapi tidak didukung dengan baik bahkan di dalam Qiskit SDK. Loop for di Qiskit v2.1.0 tidak didukung dengan baik. Alur kontrol bersarang (seperti if di dalam if lain, atau pernyataan else if) tidak memenuhi syarat untuk eksekusi di perangkat keras.
  1. Qiskit SDK mendukung deklarasi tipe klasikal apa pun yang didukung sebagai variabel input pada circuit. Variabel-variabel tersebut saat ini tidak memenuhi syarat untuk eksekusi di perangkat keras, dan tidak dapat dimuat oleh importer OpenQASM 3 Qiskit. Objek Parameter yang tidak terikat yang ada di QuantumCircuit diekspor sebagai variabel input float[64]. Opsi konfigurasi runtime tertentu dapat memungkinkan eksekusi circuit tersebut di beberapa backend.

Langkah berikutnyaโ€‹

Rekomendasi
Source: IBM Quantum docs โ€” updated 27 Apr 2026
English version on doQumentation โ€” updated 7 Mei 2026
This translation based on the English version of 11 Mar 2026