Skip to main content
IBM Quantum Platform

OpenQASM 3機能テーブル

以下は、 OpenQASM 3 の言語機能のリストである。

これらの機能の詳細については、 OpenQASM 3.X ライブ仕様を参照してください。

キー:

  • ❌ サポートされていない
  • 🟡 部分的サポート
  • 2705 ✅ 対応

完全な "supported "マークの意味はカラムによって異なる:

  • Qiskit SDK : この機能は (拡張 qiskit-qasm3-import 機能を使用して) で解析でき qiskit.qasm3.loads 、 で表現され QuantumCircuit、 OpenQASM 3 へ でエクスポート qiskit.qasm3.dumpsされます。

  • IBM Quantum Compute Service :対応するQiskit機能を備えた回路は、 IBM Quantum のCompute Serviceを通じてハードウェア上で正常に実行できます。

部分的サポート」の意味は、通常、リンク先の注記によって異なる。

Note

IBM Quantum Compute Service に回路を提出する最も一般的な方法は、 Qiskit SDK への Python -space インターフェースで回路を作成することです。 この方法で作成・提出された回路は、 OpenQASM 3のファイルから Qiskit SDK に読み込む必要はありません。

OpenQASM 3を直接使用しない場合でも、 Qiskit SDK での表示に対応している機能は安心して利用でき、 OpenQASM 3へのエクスポートや、 IBM Quantum Compute Serviceへの送信を行うことができます。 これには、 Qiskit SDK では OpenQASM 3 から読み込むことができない機能が含まれます。

OpenQASM 3 特徴
Qiskit SDKの機能
Qiskit SDK
IBM Quantum コンピューティングサービス
ノート
コメント1
QASM vstring1
include🟡1, 7
ユニコード名
qubitQubit および QuantumRegister🟡※2
bitClbit および ClassicalRegister3
boolexpr.Var と古典的表現🟡4
int4
uintexpr.Var と古典的表現🟡4
floatexpr.Var と古典的表現🟡🟡4
angleゲート・パラメーターとして暗黙の🟡4
complex4
const4
pi/π/tau/τ/euler/ゲート・パラメーターへの定数折りたたみ
エイリアシング量子レジスターと古典レジスター🟡5
レジスタ連結量子レジスターと古典レジスター🟡5
キャストexpr.Cast 古典的表現🟡🟡4
duration
durationof
ns/µs/us/ms/s/dtdelaybox6
stretchexpr.Stretch🟡🟡4, 6
delayDelay/QuantumCircuit.delay6
barrierBarrier/QuantumCircuit.barrier
boxBoxOp/QuantumCircuit.box6
組み込み 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
ビット操作🟡4
ブール演算🟡4
算術式🟡🟡4
比較🟡4
ifQuantumCircuit.if_test8
elseQuantumCircuit.if_test8
else ifQuantumCircuit.if_test8
for ループQuantumCircuit.for_loop🟡8
while ループQuantumCircuit.while_loop8
continueQuantumCircuit.continue_loop🟡8
breakQuantumCircuit.break_loop🟡8
return
extern
def サブルーチン
def サブルーチン(量子)
inputQuantumCircuit.add_input🟡4, 9
output

ノート

  1. これらの OpenQASM 3 プログラムの機能は実行に影響を与えないため、Qiskitはファイル解析の一環としてそれらを除去します。 を除去します。 これらを使用したファイルを提出することは可能だが、その効果はない。 効果はありません。 includestdgates.inc は現在Qiskitへの入力としてサポートされています、 バックエンドの実行には常に、バックエンドの命令セットアーキテクチャ(ISA)にコンパイルされた回路が必要です。 include ファイルは関係ありません。
  1. Qiskit SDKは、 qubit 宣言を含む OpenQASM 3 ファイルの解析とダンプをサポートしています。 ハードウェア上での ハードウェア上で実行する場合は、ハードウェア量子ビット(例えば、 $0 )で定義された回路のみが有効である。 Qiskit SDKは、回路がレイアウト情報を持つバックエンド用にトランパイルされた場合、サポートされるハードウェア量子ビット識別子で OpenQASM 3 を自動的に出力します。 識別子を自動的に出力します。
  1. bit- および bit[n]-typed variable declarations in Qiskit SDKは Clbit および -typed variable declarationsに対応しています。 ClassicalRegister 宣言に対応します。
  1. 2025年7月現在、Qiskit SDKは制限された型のローカル変数を表現することができ、これらのオブジェ クトに対する多くの実行時操作を表現することができる。 これらのオブジェクトに対する多くの実行時操作を表現でき、 OpenQASM 3 への出力をサポートしています。 しかし、Qiskit SDK( qiskit-qasm3-import v0.6.0 を通 じて)は、変数宣言を含む OpenQASM 3 ファイルの解析はサポートしていません。 式の解析には非常に限定的なサポートしかありません。 一般的に、Qiskitが表現システムで表現できることのほとんどは、適切な動的回路ハードウェア上で実行できます。 Qiskitが表現システムで表現できることのほとんどは、適切な動的回路ハードウェアで実行できます。 Qiskit SDK。 最新情報は の Qiskit ドキュメントを参照してください。 qiskit.circuit.classical モジュール
  1. Qiskit SDKは量子レジスタと古典レジスタの両方でレジスタエイリアスを表現できますが、古典レジスタのエイリアスを使用することは強く推奨されません。 古典レジスタのエイリアシングを使用することは強く推奨されません。 古典的レジスタのほとんどの式はエイリアスでは動作せず、エイリアスされた古典的レジスタはサポートされていない。 また、エイリアスを使用した古典レジスタは、ハードウェアの実行ではサポートされていません。 ハードウェア上での実行はサポートされていない。 Qiskit OpenQASM 3 パーサーは、 let のエイリアス文を解決することができます。 を解決できます。
  1. Qiskit SDKは QuantumCircuit.delay を介した明示的な遅延をサポートしています。 (QuantumCircuit.box) も明示的な持続時間を持つことができます。 これらの持続時間には、古典的な stretch 。 Qiskit SDK (2025年7月現在 qiskit-qasm3-import v0.6.0 )は、 duration または stretch 型の宣言の解析をサポートしていません。 OpenQASM 3 ファイルからの ハードウェアは、 stretch を含む期間のサポートに制限がある。
  1. 回路は、 IBM ハードウェア上で実行するために、バックエンド ISA にトランスパイルされなければならない。 このため このため、 gate のカスタム定義や、ゲート修飾子( inv @ など)のような高レベルのコンストラクトは、ハードウェア上でそのまま実行することはできません。 をそのままハードウェア上で実行することはできませんが、 transpile プロセスはそれらを有効な ISA 回路に変換します。 を有効なISA回路に変換します。 Qiskit SDK (2025年7月現在 qiskit-qasm3-import v0.6.0 )は、解析中にゲート修飾子を熱心に評価する。 QuantumCircuitの結果では明らかにならない。
  1. Qiskit SDKは、構造化された制御フローを表現し、これを OpenQASM 3にエクスポートできます。 と continuebreak ステートメントは技術的にはQiskitで表現できますが Qiskit SDK内でも十分にサポートされていません。 for Qiskitのループ v2.1.0 のループはあまりサポートされていません。 ネストされた制御 ネストされた制御フロー(別の if 内の ifelse if ステートメントなど)は、ハードウェアの実行対象にはなりません。 ハードウェア上で実行することはできません。
  1. Qiskit SDKは、サポートされている古典的な型を回路上の input 変数として宣言することをサポートしています。 このような変数は現在ハードウェア上で実行する資格がなく、 Qiskit 3 インポーターでロードすることはできません。 Qiskit OpenQASM 3 インポーターではロードできません。 QuantumCircuit に存在する未束縛の Parameter オブジェクトは、 input float[64] 変数としてエクスポートされる。 ある種のランタイム・コンフィギュレーション・オプションは、バックエンドによってはこのような回路の実行を可能にする。

次のステップ

推奨事項
このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。