Akankah "penyusun" IBM mengubah sirkuit identitas saya menjadi tidak ada?

Aug 17 2020

Jika saya membuat sirkuit dengan gerbang berikut:

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

dengan $\phi$ditentukan agar sama dengan 0, maka gerbang yang saya jalankan hanyalah gerbang identitas, dan rangkaian tidak melakukan apa pun pada qubit. Akankah perangkat keras IBM benar-benar "menjalankan" beberapa gerbang dengan beberapa parameter disetel sedekat mungkin dengan 0? Atau akankah penyusun IBM menyadari bahwa tidak ada yang harus dilakukan, dan tidak "menerapkan" gerbang sama sekali?

Meskipun kedua kasus idealnya setara, dalam praktiknya kasus di mana "tidak ada" yang dilakukan, akan lebih tidak rentan terhadap kesalahan, yang dapat membuat perbedaan yang signifikan dalam hasil yang kami amati.

Begitu juga jika kita menempatkan dua $X$ gerbang di samping satu sama lain dalam suatu sirkuit untuk dijalankan pada perangkat keras IBM, akankah penyusun IBM memperhatikan bahwa sirkuit tersebut hanyalah sirkuit identitas, dan memutuskan untuk tidak melakukan apa pun daripada menerapkan dua gerbang yang membatalkan satu sama lain?

Sejauh mana sirkuit "kompilasi" perangkat lunak dan firmware IBM seperti ini?

Jawaban

9 AliJavadi Aug 17 2020 at 10:56

Setiap kompilasi / pengoptimalan sirkuit terjadi secara transparan oleh Qiskit. Sebagai pengguna, Anda memiliki kendali atas apa yang terjadi melalui optimization_levelargumen yang diteruskan transpile(). Pengaturan tingkat optimasi tinggi (misalnya level 3) akan melakukan lebih banyak optimasi sirkuit dan pengaturan rendah akan melakukan sedikit atau tidak ada optimasi (misalnya level 0). Dua contoh yang Anda berikan sangat mudah. Mereka akan dioptimalkan pada tingkat pengoptimalan 3 dan dibiarkan pada tingkat pengoptimalan 0.