انتقل إلى المحتوى الرئيسي

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

Package versions

The code on this page was developed using the following requirements. We recommend using these versions or newer.

qiskit-ibm-runtime~=0.46.1

عند تنفيذ دائرة على وحدة معالجة كمية (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 — required packages for this notebook
!pip install -q qiskit-ibm-runtime
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

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

توصيات