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에서는 그대로 유지됩니다.