انتقل إلى المحتوى الرئيسي
هذا المشروع في مرحلة تجريبية. وجدت خطأ؟ افتح مشكلة على GitHub. لديك سؤال أو فكرة؟ اسأل في Discussions — نحب سماع ملاحظاتك!
كيف جودة الترجمة في هذه الصفحة؟

تهيئة الكيوبتات

Package versions

تم تطوير الكود في هذه الصفحة باستخدام المتطلبات التالية. ننصح باستخدام هذه الإصدارات أو أحدث.

qiskit-ibm-runtime~=0.47.0

عند تنفيذ دائرة على وحدة معالجة كمية (QPU) من IBM®، يُدرج النظام عادةً إعادة تعيين ضمنية في بداية الدائرة للتأكد من تهيئة الكيوبتات إلى الصفر. يتحكم في هذا السلوك العلَم init_qubits، الذي يُعيَّن كـخيار تنفيذ primitive.

غير أن عدم كمال عملية إعادة التعيين قد يُدخل أخطاءً في تحضير الحالة. للتخفيف من هذا الخطأ، تُدرج وحدة QPU أيضًا وقت تأخير التكرار (أو rep_delay) بين الدوائر. لكل backend قيمة افتراضية مختلفة لـrep_delay، لكنها في الغالب تُضبط لتحقيق توازن بين دقة إعادة التعيين وإجمالي وقت التنفيذ. شغِّل backend.default_rep_delay للاطلاع على قيمة rep_delay الافتراضية لوحدة QPU معينة.

نظرًا لاعتماد جميع وحدات IBM الكمية على تنفيذ معدل التكرار الديناميكي، يمكنك تغيير rep_delay لكل مهمة. تُجمَّع الدوائر التي ترسلها في مهمة primitive معًا للتنفيذ على وحدة QPU. تُنفَّذ هذه الدوائر بالتكرار عليها لكل لقطة (shot) مطلوبة؛ يسير التنفيذ عموديًا عبر مصفوفة من الدوائر واللقطات، كما هو موضح في الشكل التالي.

العمود الأول يمثل اللقطة 0. تُنفَّذ الدوائر بالترتيب من 0 إلى 3. العمود الثاني يمثل اللقطة 1. تُنفَّذ الدوائر بالترتيب من 0 إلى 3. تتبع الأعمدة المتبقية نفس النمط.

نظرًا لإدراج rep_delay بين الدوائر، تواجه كل لقطة هذا التأخير. لذلك، كلما خفضت rep_delay، انخفض إجمالي وقت تنفيذ وحدة QPU، على حساب ارتفاع معدل خطأ تحضير الحالة، كما توضح الصورة التالية:

تُظهر هذه الصورة أنه كلما انخفضت قيمة rep_delay، ارتفع معدل خطأ تحضير الحالة.

إذا ضبطت كلًا من rep_delay=0 وinit_qubits=False، تتحقق "دمج" الدوائر، إذ ستبدأ الكيوبتات من الحالة النهائية للقطة السابقة.

تجدر الإشارة إلى أنه رغم تجميع دوائر مهمة primitive معًا لتنفيذها على وحدة QPU، لا يوجد ضمان بشأن ترتيب تنفيذ الدوائر القادمة من وحدات PUB. فعلى سبيل المثال، إذا أرسلت pubs=[pub1, pub2]، قد لا تُنفَّذ دوائر pub1 قبل pub2. كما لا يوجد ضمان بأن دوائر المهمة ذاتها ستعمل كدفعة واحدة على وحدة QPU.

تحديد rep_delay لمهمة primitive​

التحقق من قيمة rep_delay لوحدة QPU

تحقق دائمًا من نطاق rep_delay المدعوم للوحدة QPU المحددة التي تستخدمها. لا تكون هذه القيم متماثلة لكل QPU وقد تتغير أيضًا بمرور الوقت.

تجدر الإشارة إلى أن زيادة rep_delay سيكون لها تأثير مباشر على وقت التنفيذ واستهلاك السعة المخصّصة.

# Added by doQumentation — installs the packages this notebook needs if they are missing
import importlib.util

_needed = {"qiskit_ibm_runtime": "qiskit-ibm-runtime"}
_missing = [pip for module, pip in _needed.items()
if importlib.util.find_spec(module) is None]
# One at a time, so a package that fails to install does not block the others
for _pip in _missing:
%pip install -q {_pip}
if not _missing:
print("\u2713 All required packages are installed")
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

الخطوات التالية​

توصيات