דלג לתוכן הראשי

מגבלות משרה

כשאתה שולח משרה ל-IBM® QPU, היא נשלחת תחילה לשירות אימות המשרות. שירות זה מנסה להבטיח שהמשרה תוכל לרוץ על ה-QPU, כדי שלא תצטרך להמתין שתעבור את התור ואז תיכשל. הבדיקות כוללות אכיפת המגבלות המתוארות להלן. אם מגבלות אלו יחרגו, עומס העבודה לא יוכל להיות מטופל על-ידי ערימת התוכנה הקוונטית ובדרך-כלל ייכשל.

הערות
  • אפשרויות primitive מסוימות מגדילות את גודל ה-Circuit. המגבלות המתוארות נבדקות לאחר העלייה הצפויה בגודל ה-Circuit. בפרט, האפשרויות הבאות מגדילות את גודל ה-Circuit:
  • המגבלות שמדווחות על-ידי שדות backend.configuration() בשם max_shots ו-max_experiments אינן עוד רלוונטיות או נאכפות. שדות אלו יוסרו בעתיד הקרוב.
  • מגבלות אלו הן למשרה, לא ל-Primitive Unified Bloc (PUB).

מספר הרצות מרבי

לכל היותר, 10 מיליון הרצות מותרות למשרות Sampler (ניתן לפצל משרות Estimator לתת-משרות קטנות יותר, לכן מגבלה זו לא חלה עליהן). מספר ההרצות הוא מספר ה-Circuits כפול מספר ה-shots, כאשר ה-Circuits הם אלה שנוצרים לאחר שידור רכיבי PUB.

לדוגמה, אם יש לך PUB עם Circuit אחד ופרמטרים עם צורה (4, 1), זה יניב 4 Circuits. אם ביקשת 2,000 shots, אז מספר ההרצות הכולל הוא 4×2,000=8,0004 \times 2,000 = 8,000.

שים לב שאם אתה מפעיל Pauli-twirling במשרת Sampler שלך, מספר ה-shots הכולל מבוסס על הערכים num_randomizations ו-shots_per_randomization. ראה TwirlingOptions לפרטים נוספים.

המספר המרבי של הוראות ברמה נמוכה לכל Qubit

השירות מאפשר עד 26.8 מיליון הוראות מערכת בקרה לכל Qubit. זה מבטיח שה-Circuits של המשתמש מתאימים לזיכרון ההוראות של מערכת הבקרה. הדוגמה להלן מראה כיצד לעשות Transpile ל-Circuit ולספור כמה הוראות מכל סוג יש.

הטבלה הבאה מתארת כיצד המערכת מתרגמת הוראות Circuit של ארכיטקטורת מערכת הוראות (ISA) להוראות מערכת בקרה בעת חישוב מגבלה זו.

הוראהספירה
rz1
delay1
sx2
x2
cx5
cz5
ecr5
measure10
reset17
init50
הערה

טבלה זו לוכדת את ההיוריסטיקה המשמשת לאימות ואינה משקפת את המספר המדויק של ההוראות המשמשות ליישום פעולה.

דוגמה

הגדר Circuits, בצע עליהם Transpile וקבל ספירה של כמה Gates יורצו.

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 כנגד Backends מותאמים אישית.

המספר המרבי של שערים חד-Qubit ודו-Qubit לכל Circuit

המספר המרבי של שערים חד-Qubit הוא כדלקמן:

  • 30 מיליון שערי RZ
  • 20 מיליון שערי SX

המספר המרבי של שערים דו-Qubit לכל Circuit הוא חמישה מיליון. זה מבטיח שניתן יהיה לטפל במשרה בתוך מגבלות הזיכרון של ערימת התוכנה ברמה הנמוכה.