Circuit cutting สำหรับเงื่อนไขขอบเขตเป็นคาบ
ประมาณการใช้งาน: สองนาทีบนโปรเซสเซอร์ Eagle (หมายเหตุ: นี่เป็นเพียงการประมาณเท่านั้น เวลาจริงอาจแตกต่างกัน)
พื้นฐาน
ใน notebook นี้ เราจะพิจารณาการจำลอง periodic chain ของ Qubit ที่มี 2-qubit operation ระหว่าง Qubit ที่อยู่ติดกันทุกคู่ รวมถึง Qubit แรกและ Qubit สุดท้ายด้วย Periodic chain มักพบในปัญหาทางฟิสิกส์และเคมี เช่น Ising model และการจำลองโมเลกุล
อุปกรณ์ IBM Quantum® ในปัจจุบันเป็นแบบระนาบ สามารถฝัง periodic chain บางชนิดลงบนโทโพโลยีโดยตรงได้ในกรณีที่ Qubit แรกและ Qubit สุดท้ายเป็นเพื่อนบ้านกัน อย่างไรก็ตาม สำหรับปัญหาที่มีขนาดใหญ่พอ Qubit แรกและ Qubit สุดท้ายอาจอยู่ห่างกันมาก จึงต้องใช้ SWAP gate จำนวนมากสำหรับ 2-qubit operation ระหว่างสอง Qubit นี้ ปัญหา periodic boundary แบบนี้ได้รับการศึกษาใน บทความนี้
ใน notebook นี้ เราจะแสดงการใช้ circuit cutting เพื่อจัดการกับปัญหา periodic chain ในระดับ utility scale ที่ Qubit แรกและ Qubit สุดท้ายไม่ได้เป็นเพื่อนบ้านกัน การตัด long-range connectivity นี้ช่วยหลีกเลี่ยง SWAP gate ส่วนเกิน โดยแลกกับการรันหลาย instance ของ Circuit และการประมวลผลแบบ classical หลังจากนั้น โดยสรุป การตัดสามารถนำมาใช้เพื่อคำนวณ 2-qubit operation ระยะไกลในเชิงตรรกะได้ กล่าวอีกนัยหนึ่ง วิธีนี้นำไปสู่การเพิ่ม connectivity ของ coupling map อย่างมีประสิทธิภาพ ซึ่งช่วยลดจำนวน SWAP gate ลง
โปรดสังเกตว่ามีการตัดสองประเภท ได้แก่ การตัด wire ของ Circuit (เรียกว่า wire cutting) หรือการแทนที่ 2-qubit gate ด้วย single-qubit operation หลายตัว (เรียกว่า gate cutting) ใน notebook นี้จะเน้นที่ gate cutting สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ gate cutting ดูได้ที่ เอกสารอธิบาย ใน qiskit-addon-cutting และเอกสารอ้างอิงที่เกี่ยวข้อง สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ wire cutting ดูได้ที่บทเรียน Wire cutting สำหรับการประมาณค่า expectation values หรือบทเรียนใน qiskit-addon-cutting
ข้อกำหนด
ก่อนเริ่มบทเรียนนี้ ตรวจสอบให้แน่ใจว่าติดตั้งสิ่งต่อไปนี้แล้ว:
- Qiskit SDK v1.2 หรือสูงกว่า (
pip install qiskit) - Qiskit Runtime v0.3 หรือสูงกว่า (
pip install qiskit-ibm-runtime) - Circuit cutting Qiskit addon v.9.0 หรือสูงกว่า (
pip install qiskit-addon-cutting)
ตั้งค่า
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib numpy qiskit qiskit-addon-cutting qiskit-ibm-runtime
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from qiskit.transpiler import PassManager
from qiskit.transpiler.passes import (
BasisTranslator,
Optimize1qGatesDecomposition,
)
from qiskit.circuit.equivalence_library import (
SessionEquivalenceLibrary as sel,
)
from qiskit.converters import circuit_to_dag, dag_to_circuit
from qiskit.result import sampled_expectation_value
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler.preset_passmanagers import generate_preset_pass_manager
from qiskit.circuit.library import TwoLocal
from qiskit_addon_cutting import (
cut_gates,
generate_cutting_experiments,
reconstruct_expectation_values,
)
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import SamplerV2, SamplerOptions, Batch
ขั้นตอนที่ 1: แมปอินพุต classical ไปยังปัญหา quantum
ที่นี่ เราจะสร้าง TwoLocal Circuit และกำหนด observable บางอย่าง
- อินพุต: พารามิเตอร์สำหรับสร้าง Circuit
- เอาต์พุต: Abstract circuit และ observable
เราพิจารณา entangler map แบบ hardware-efficient สำหรับ TwoLocal Circuit ที่มี periodic connectivity ระหว่าง Qubit สุดท้ายและ Qubit แรกของ entangler map การ interaction ระยะไกลนี้อาจนำไปสู่ SWAP gate ส่วนเกินระหว่างการ transpile ซึ่งจะเพิ่ม depth ของ Circuit