IBMの「コンパイラー」は私のID回路を無に変えますか?

Aug 17 2020

次のゲートで回路を作成するとします。

$$\tag{1}R_\phi = \begin{bmatrix} 1 & 0 \\ 0 & e^{i \phi} \end{bmatrix},$$

$\phi$0に等しいと指定された場合、私が実行しているゲートは単なるIDゲートであり、回路はキュービットに対して何もしません。IBMハードウェアは、実際にいくつかのゲートを「実行」し、いくつかのパラメーターを可能な限り0に近づけますか?それとも、IBMのコンパイラーは、何も行われるべきではなく、ゲートをまったく「適用」しないことを認識しますか?

2つのケースは理想的には同等ですが、実際には「何もしない」場合はエラーの影響を受けにくく、観察される結果に大きな違いが生じる可能性があります。

同様に、2つ置くと $X$ IBMハードウェア上で実行される回路内で互いに隣接するゲートの場合、IBMのコンパイラーは、その回路が単なるID回路であることに気づき、互いに打ち消し合う2つのゲートを適用する以外に何もしないことにしますか?

IBMのソフトウェアとファームウェアはどの程度このような回路を「コンパイル」しますか?

回答

9 AliJavadi Aug 17 2020 at 10:56

コンパイル/回路の最適化は、Qiskitによって透過的に行われます。ユーザーは、にoptimization_level渡された引数を介して何が起こるかを制御できますtranspile()。最適化レベルを高く設定すると(たとえばレベル3)、回路の最適化がさらに実行され、低く設定すると最適化がほとんどまたはまったく実行されません(たとえばレベル0)。あなたが提供する2つの例は簡単です。それらは最適化レベル3で最適化され、最適化レベル0でそのままになります。