ข้ามไปยังเนื้อหาหลัก
โครงการนี้อยู่ในช่วงเบต้า พบข้อผิดพลาด? สร้าง GitHub Issue มีคำถามหรือไอเดีย? ถามใน Discussions — ยินดีรับฟังความคิดเห็น!
คุณภาพการแปลในหน้านี้เป็นอย่างไร?

ขีดจำกัดของงาน

เมื่อส่งงานไปยัง IBM® QPU งานนั้นจะถูกส่งไปยังบริการตรวจสอบงานก่อน บริการนี้พยายามตรวจสอบว่างานจะสามารถรันบน QPU ได้ เพื่อลดโอกาสที่งานจะล้มเหลวหลังจากที่รอคิวไปแล้ว การตรวจสอบเหล่านี้รวมถึงการบังคับใช้ขีดจำกัดต่อไปนี้ หากเกินขีดจำกัดเหล่านี้ quantum software stack จะไม่สามารถจัดการ workload นั้นได้ และงานมักจะล้มเหลว

หมายเหตุ
  • ตัวเลือก primitive บางอย่างเพิ่มขนาด Circuit ขีดจำกัดที่อธิบายจะถูกตรวจสอบ หลังจาก ขนาด Circuit เพิ่มขึ้นตามที่คาดไว้ โดยเฉพาะอย่างยิ่ง ตัวเลือกเหล่านี้เพิ่มขนาด Circuit:
  • ขีดจำกัดที่รายงานโดยฟิลด์ backend.configuration() ได้แก่ max_shots และ max_experiments ไม่มีความเกี่ยวข้องหรือบังคับใช้อีกต่อไป ฟิลด์เหล่านี้จะถูกลบออกในอนาคตอันใกล้
  • ขีดจำกัดเหล่านี้เป็นต่องาน ไม่ใช่ต่อ Primitive Unified Bloc (PUB)

จำนวนการรันสูงสุด​

อนุญาตจำนวนการรันได้สูงสุด 10 ล้าน ครั้งสำหรับงาน Sampler เนื่องจากขนาดของผลลัพธ์ จำนวนการรันคือจำนวน Circuit คูณกับจำนวน shot โดยนับ Circuit ที่ได้หลังจาก broadcast องค์ประกอบของ PUB แล้ว

ตัวอย่างเช่น หาก PUB มี Circuit หนึ่งตัวและพารามิเตอร์ที่มีรูปร่าง (4, 1) จะได้ Circuit 4 ตัว หากขอ 2,000 shot จำนวนการรันทั้งหมดจะเป็น 4×2,000=8,0004 \times 2,000 = 8,000

โปรดทราบว่าหากเปิดใช้งาน Pauli-twirling ในงาน Sampler จำนวน shot ทั้งหมดจะขึ้นอยู่กับค่า num_randomizations และ shots_per_randomization ดูรายละเอียดเพิ่มเติมที่ TwirlingOptions

จำนวนคำสั่งระดับต่ำสูงสุดต่อ Qubit​

บริการอนุญาตคำสั่ง control-system ได้สูงสุด 26.8 ล้านคำสั่งต่อ Qubit เพื่อให้แน่ใจว่า Circuit ของผู้ใช้จะพอดีกับหน่วยความจำคำสั่งของ control system ตัวอย่างด้านล่างแสดงวิธีการ transpile Circuit และนับจำนวนคำสั่งแต่ละประเภท

ตารางต่อไปนี้อธิบายว่าระบบแปลคำสั่ง instruction set architecture (ISA) Circuit เป็นคำสั่ง control system อย่างไรเมื่อคำนวณขีดจำกัดนี้

คำสั่งจำนวน
rz1
delay1
sx2
x2
cx5
cz5
ecr5
measure10
reset17
init50
หมายเหตุ

ตารางนี้แสดง heuristic ที่ใช้ในการตรวจสอบและไม่ได้สะท้อนจำนวนคำสั่งที่แน่นอนที่ใช้ในการดำเนินการ

ตัวอย่าง​

กำหนด Circuit, transpile และนับจำนวน Gate ที่จะรัน

from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService

num_qubits = 50
ghz = QuantumCircuit(num_qubits)
ghz.h(range(num_qubits))
ghz.cx(0, range(1, num_qubits))
op_counts = ghz.count_ops()

# Choose the least busy backend
service = QiskitRuntimeService()
backend = service.least_busy(operational=True, simulator=False)

pm = generate_preset_pass_manager(optimization_level=3, backend=backend)
transpiled_ghz = pm.run(ghz)
op_counts = transpiled_ghz.count_ops()

print(f"Post-Transpilation gates: {op_counts}")

ดูรายละเอียดทั้งหมดได้ที่ Transpile against custom backends

จำนวน single- และ two-qubit Gate สูงสุดต่อ Circuit​

จำนวน single-qubit Gate สูงสุดมีดังนี้:

  • RZ Gate 30 ล้านตัว
  • SX Gate 20 ล้านตัว

จำนวน two-qubit Gate สูงสุดต่อ Circuit คือ 5 ล้านตัว เพื่อให้แน่ใจว่างานสามารถจัดการได้ภายในขีดจำกัดหน่วยความจำของ software stack ระดับต่ำ