Qubit initialization
เวอร์ชันของแพ็กเกจ
โค้ดในหน้านี้พัฒนาโดยใช้ requirements ต่อไปนี้ แนะนำให้ใช้เวอร์ชันนี้หรือใหม่กว่า
qiskit-ibm-runtime~=0.46.1
เมื่อ Circuit ถูกประมวลผลบน IBM® quantum processing unit (QPU) โดยทั่วไปจะมีการแทรก implicit reset ที่ต้นของ Circuit เพื่อให้แน่ใจว่า Qubit ถูก initialize เป็นศูนย์ ซึ่งควบคุมโดย flag init_qubits ที่กำหนดไว้เป็น primitive execution option
อย่างไรก็ตาม ความไม่สมบูรณ์ในกระบวนการ reset อาจนำไปสู่ state-preparation error เพื่อลดความผิดพลาด QPU ยังแทรก repetition delay time (หรือ rep_delay) ระหว่าง Circuit ด้วย Backend แต่ละตัวมี rep_delay ค่าเริ่มต้นที่แตกต่างกัน แต่ปกติจะถูกกำหนดเพื่อสมดุลระหว่างความแม่นยำของการ reset กับเวลาการประมวลผลรวม รัน backend.default_rep_delay เพื่อดูค่า rep_delay เริ่มต้นของ QPU ที่ต้องการ
เนื่องจาก IBM QPU ทั้งหมดใช้ dynamic repetition rate execution คุณสามารถเปลี่ยน rep_delay สำหรับแต่ละ job ได้ Circuit ที่คุณส่งใน primitive job จะถูกรวมเป็นกลุ่มเพื่อประมวลผลบน QPU Circuit เหล่านี้ถูกประมวลผลโดยการวน iterate ข้าม Circuit สำหรับแต่ละ shot ที่ร้องขอ โดยการประมวลผลเป็นแบบ column-wise ข้ามเมทริกซ์ของ Circuit และ shot ดังแสดงในรูปต่อไปนี้

เนื่องจาก rep_delay ถูกแทรกระหว่าง Circuit แต่ละ shot ของการประมวลผลจะพบกับ delay นี้ ดังนั้น เมื่อคุณลด rep_delay เวลาประมวลผล QPU รวมจะลดลง แต่แลกกับ state preparation error rate ที่เพิ่มขึ้น ดังที่รูปต่อไปนี้แสดง:

ถ้าคุณตั้งค่าทั้ง rep_delay=0 และ init_qubits=False Circuit จะ "รวม" เข้าด้วยกัน เนื่องจาก Qubit จะเริ่มในสถานะสุดท้ายจาก shot ก่อนหน้า
โปรดทราบว่าแม้ Circuit ใน primitive job จะถูกรวมเป็นกลุ่มสำหรับการประมวลผล QPU แต่ไม่มีการรับประกันลำดับที่ Circuit จาก PUB จะถูกประมวลผล ตัวอย่างเช่น ถ้าคุณส่ง pubs=[pub1, pub2] Circuit จาก pub1 อาจไม่รันก่อน pub2 และไม่มีการรับประกันว่า Circuit จาก job เดียวกันจะรันเป็น batch เดียวบน QPU
ระบุ rep_delay สำหรับ primitive job
ตรวจสอบช่วง rep_delay ที่รองรับสำหรับ QPU ที่คุณใช้งานเสมอ ค่าเหล่านี้ไม่เหมือนกันสำหรับทุก QPU และอาจเปลี่ยนแปลงได้ตามเวลา
โปรดทราบว่าการเพิ่ม rep_delay จะส่งผลโดยตรงต่อเวลาการประมวลผลและการใช้งาน capacity ของคุณ
# Added by doQumentation — required packages for this notebook
!pip install -q qiskit-ibm-runtime
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
service = QiskitRuntimeService()
# Make sure your backend supports it
backend = service.least_busy(
operational=True, min_num_qubits=100, dynamic_reprate_enabled=True
)
# Determine the allowable range
backend.rep_delay_range
sampler = Sampler(mode=backend)
# Specify a value in the supported range
sampler.options.execution.rep_delay = 0.0005
ขั้นตอนถัดไป
- ลองทำตัวอย่างใน tutorial Quantum approximate optimization algorithm (QAOA)
- ทบทวนวิธี เริ่มต้นใช้งาน Estimator
- ทบทวนวิธี เริ่มต้นใช้งาน Sampler