Сможет ли «компилятор» IBM превратить мою схему идентификации в ничто?

Aug 17 2020

Если бы я создал схему со следующим вентилем:

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

с участием $\phi$задано равным 0, то запускаемый мной вентиль - это просто вентиль идентичности, а схема не должна делать ничего с кубитами. Действительно ли оборудование IBM "запускает" какой-то вентиль, когда какой-либо параметр установлен как можно ближе к 0? Или компиляторы IBM осознают, что ничего не нужно делать, и вообще не «применяют» какие-либо ворота?

Хотя в идеале эти два случая были бы эквивалентны, на практике тот, где «ничего не делается», был бы менее подвержен ошибкам, которые могли бы существенно повлиять на наблюдаемые нами результаты.

Аналогично, если мы положим два $X$ Если ворота расположены рядом друг с другом в схеме, которая будет запускаться на оборудовании IBM, могут ли компиляторы IBM заметить, что схема является просто схемой идентификации, и решить ничего не делать, а не применять два элемента, которые нейтрализуют друг друга?

В какой степени программное обеспечение и прошивка IBM «компилируют» подобные схемы?

Ответы

9 AliJavadi Aug 17 2020 at 10:56

Любая компиляция / оптимизация схемы выполняется Qiskit прозрачно. Как пользователь вы можете контролировать происходящее через optimization_levelпереданный аргумент transpile(). Установка высокого уровня оптимизации (например, уровня 3) приведет к большему количеству оптимизаций схемы, а установка низкого уровня приведет к незначительной оптимизации или ее не будет (например, уровень 0). Два приведенных вами примера просты. Они будут оптимизированы на уровне оптимизации 3 и оставлены в покое на уровне оптимизации 0.