מגבלות עבודה
כשאתה שולח עבודה ל-IBM® QPU, היא נשלחת תחילה לשירות אימות העבודות. שירות זה מנסה להבטיח שהעבודה תוכל לרוץ על ה-QPU, כדי להקטין את הסיכוי שהעבודה שלך תיכשל אחרי שחיכית בתור. הבדיקות כוללות אכיפת המגבלות המתוארות להלן. אם חורגים ממגבלות אלו, מחסנית התוכנה הקוונטית לא תוכל לטפל בעומס העבודה, ובדרך-כלל הוא ייכשל.
- אפשרויות primitive מסוימות מגדילות את גודל ה-Circuit. המגבלות המתוארות נבדקות לאחר העלייה הצפויה בגודל ה-Circuit. בפרט, האפשרויות הבאות מגדילות את גודל ה-Circuit:
- Dynamical decoupling ו-gate-folding ZNE מוסיפים Gates נוספים שנכללים בהוראות עבור מגבלת המספר המרבי של הוראות ברמה נמוכה לכל qubit.
- Gate-folding ZNE מוסיף שערים דו-Qubit נוספים הרלוונטיים למגבלת המספר המרבי של שערים דו-Qubit לעבודה. מספר השערים הדו-Qubit מוכפל בסכום גורמי הרעש המבוקשים ב-gate-folding ZNE.
- המגבלות שמדווחות על-ידי שדות
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, אז מספר ההרצות הכולל הוא .
שים לב שאם אתה מפעיל Pauli-twirling בעבודת Sampler שלך, מספר ה-shots הכולל מבוסס על הערכים num_randomizations ו-shots_per_randomization. ראה TwirlingOptions לפרטים נוספים.
המספר המרבי של הוראות ברמה נמוכה לכל qubit
השירות מאפשר עד 26.8 מיליון הוראות מערכת בקרה לכל qubit. זה מבטיח שה-Circuits של המשתמש מתאימים לזיכרון ההוראות של מערכת הבקרה. הדוגמה להלן מראה כיצד לעשות Transpile ל-Circuit ולספור כמה הוראות מכל סוג יש.
הטבלה הבאה מתארת כיצד המערכת מתרגמת הוראות Circuit של ארכיטקטורת ערכת הוראות (ISA) להוראות מערכת בקרה בעת חישוב מגבלה זו.
| הוראה | ספירה |
|---|---|
rz | 1 |
delay | 1 |
sx | 2 |
x | 2 |
cx | 5 |
cz | 5 |
ecr | 5 |
measure | 10 |
reset | 17 |
init | 50 |
טבלה זו מתארת את ההיוריסטיקה המשמשת לאימות ואינה משקפת את המספר המדויק של ההוראות המשמשות ליישום פעולה.
דוגמה
הגדר 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 הוא חמישה מיליון. זה מבטיח שניתן יהיה לטפל בעבודה בתוך מגבלות הזיכרון של מחסנית התוכנה ברמה הנמוכה.