"คอมไพเลอร์" ของ IBM จะเปลี่ยนวงจรข้อมูลประจำตัวของฉันให้กลายเป็นอะไรหรือเปล่า

Aug 17 2020

ถ้าฉันจะสร้างวงจรด้วยประตูต่อไปนี้:

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

ด้วย $\phi$ระบุให้เท่ากับ 0 ดังนั้นประตูที่ฉันกำลังทำงานอยู่เป็นเพียงประตูประจำตัวและวงจรจะไม่ทำอะไรกับ qubits ฮาร์ดแวร์ IBM จะ "รัน" เกตบางตัวโดยมีพารามิเตอร์บางตัวถูกตั้งค่าใกล้ 0 มากที่สุดหรือไม่ หรือคอมไพเลอร์ของ IBM จะรับรู้ว่าไม่มีอะไรต้องทำและไม่ "ใช้" ประตูใด ๆ เลย?

แม้ว่าทั้งสองกรณีจะเท่าเทียมกันในทางปฏิบัติกรณีที่ "ไม่ทำอะไร" จะมีความอ่อนไหวต่อข้อผิดพลาดน้อยกว่าซึ่งอาจสร้างความแตกต่างอย่างมีนัยสำคัญในผลลัพธ์ที่เราสังเกตได้

ในทำนองเดียวกันถ้าเราใส่สอง $X$ ประตูที่อยู่ติดกันในวงจรที่จะรันบนฮาร์ดแวร์ของ IBM คอมไพเลอร์ของไอบีเอ็มจะสังเกตเห็นว่าวงจรเป็นเพียงวงจรข้อมูลประจำตัวหรือไม่และตัดสินใจที่จะไม่ทำอะไรเลยแทนที่จะใช้สองประตูที่ตัดซึ่งกันและกันออก?

ซอฟต์แวร์และเฟิร์มแวร์ของ IBM "รวบรวม" วงจรเช่นนี้ในระดับใด?

คำตอบ

9 AliJavadi Aug 17 2020 at 10:56

การเพิ่มประสิทธิภาพการคอมไพล์ / วงจรใด ๆ เกิดขึ้นอย่างโปร่งใสโดย Qiskit เป็นผู้ใช้คุณสามารถควบคุมสิ่งที่เกิดขึ้นผ่านทางอาร์กิวเมนต์ส่งผ่านไปยังoptimization_level transpile()การตั้งค่าระดับการปรับให้เหมาะสมให้สูง (เช่นระดับ 3) จะทำการเพิ่มประสิทธิภาพวงจรมากขึ้นและการตั้งค่าให้ต่ำจะทำให้เกิดการปรับให้เหมาะสมเพียงเล็กน้อยหรือไม่มีเลย (เช่นระดับ 0) สองตัวอย่างที่คุณให้นั้นตรงไปตรงมา พวกเขาจะได้รับการปรับให้เหมาะสมที่ระดับการเพิ่มประสิทธิภาพ 3 และเหลือเพียงอย่างเดียวที่ระดับการเพิ่มประสิทธิภาพ 0