דלג לתוכן הראשי
פרויקט זה בשלב בטא. מצאת באג? פתח issue ב-GitHub. יש שאלה או רעיון? שאל ב-Discussions — נשמח לשמוע ממך!
מה איכות התרגום בדף זה?

מגבלות עבודה

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

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

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

לכל היותר, 10 מיליון הרצות מותרות לעבודות Sampler בשל גודל הפלט. מספר ההרצות הוא מספר ה-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 הוא חמישה מיליון. זה מבטיח שניתן יהיה לטפל בעבודה בתוך מגבלות הזיכרון של מחסנית התוכנה ברמה הנמוכה.