تمرين - ابدأ باستخدام Azure Quantum Resource Estimator
دعونا نتدرب على استخدام Azure Quantum Resource Estimator. في المثال التالي، يمكنك تقدير الموارد المادية لعينة خوارزمية Shor.
تثبيت qsharp وqsharp-widgets
أولا، قم بتثبيت أحدث حزم وAzure qsharp-widgets
Quantumqsharp
.
python -m pip install --upgrade qsharp qsharp-widgets
إنشاء خوارزمية المقدار
في Visual Studio Code، حدد View > Command palette وحدد Create: New Jupyter Notebook.
في الخلية الأولى لدفتر الملاحظات، قم باستيراد الحزمة
qsharp
:import qsharp from qsharp_widgets import EstimateDetails
أضف خلية جديدة وانسخ التعليمات البرمجية التالية:
%%qsharp /// # Sample /// Random Bit /// /// # Description /// This Q# program generates a random bit by setting a qubit in a superposition /// of the computational basis states |0〉 and |1〉, and returning the measurement /// result. operation RandomBit() : Result { // Qubits are only accesible for the duration of the scope where they // are allocated and are automatically released at the end of the scope. use qubit = Qubit(); // Set the qubit in superposition by applying a Hadamard transformation. H(qubit); // Measure the qubit. There is a 50% probability of measuring either // `Zero` or `One`. let result = M(qubit); // Reset the qubit so it can be safely released. Reset(qubit); return result; }
تقدير خوارزمية المقدار
الآن، قم بتقدير الموارد المادية للعملية
RandomBit
باستخدام الافتراضات الافتراضية. أضف خلية جديدة وانسخ التعليمات البرمجية التالية:result = qsharp.estimate("RandomBit()") result
qsharp.estimate
تنشئ الدالة كائن نتيجة، والذي يمكن استخدامه لعرض جدول مع عدد الموارد الفعلية الإجمالية. يعرض الجدول الأول تقديرات الموارد المادية الرئيسية.RandomBit
تتطلب العملية 300 كيوبت وتأخذ ميكرو ثانية للتشغيل على كمبيوتر كمومي.تقديرات الموارد الفعلية القيمة وقت التشغيل 2 microsecs rQOPS 3.00 مليون البتات الكمومية الفعلية 300 يمكنك فحص تفاصيل التكلفة عن طريق طي المجموعات التي تحتوي على مزيد من المعلومات. على سبيل المثال، قم بطي مجموعة معلمات qubit المنطقية لمعرفة أن مسافة التعليمات البرمجية هي 5 وعدد البتات الكمومية الفعلية لكل كيوبت منطقي هو 50.
معلمة qubit المنطقية القيمة مخطط QEC surface_code مسافة التعليمات البرمجية 5 البتات الكمومية الفعلية 50 وقت الدورة المنطقية 2 microsecs معدل خطأ qubit المنطقي 3.00E-5 عبور Prefactor 0.03 حد تصحيح الخطأ 0.01 صيغة وقت الدورة المنطقية (4 * twoQubitGateTime
+ 2 *oneQubitMeasurementTime
) *codeDistance
صيغة qubits الفعلية 2 * codeDistance
*codeDistance
يمكنك استخدام
jobParams
الحقل للوصول إلى جميع المعلمات الهدف التي يمكن تمريرها إلى تنفيذ المهمة ومعرفة القيم الافتراضية التي تم افتراضها:result['jobParams']
{'errorBudget': 0.001, 'qecScheme': {'crossingPrefactor': 0.03, 'errorCorrectionThreshold': 0.01, 'logicalCycleTime': '(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance', 'name': 'surface_code', 'physicalQubitsPerLogicalQubit': '2 * codeDistance * codeDistance'}, 'qubitParams': {'instructionSet': 'GateBased', 'name': 'qubit_gate_ns_e3', 'oneQubitGateErrorRate': 0.001, 'oneQubitGateTime': '50 ns', 'oneQubitMeasurementErrorRate': 0.001, 'oneQubitMeasurementTime': '100 ns', 'tGateErrorRate': 0.001, 'tGateTime': '50 ns', 'twoQubitGateErrorRate': 0.001, 'twoQubitGateTime': '50 ns'}}
يمكنك أن ترى أن "مقدر الموارد" يأخذ
qubit_gate_ns_e3
نموذج qubit ورمزsurface_code
تصحيح الخطأ وموازنة الخطأ 0.001 كقيم افتراضية لتقدير .
تغيير القيم الافتراضية وتقدير الخوارزمية
عند إرسال طلب تقدير الموارد لبرنامجك، يمكنك تحديد بعض المعلمات الاختيارية. هذه هي المعلمات الهدف التي يمكنك تخصيصها:
errorBudget
: ميزانية الخطأ الإجمالية المسموح بها للخوارزميةqecScheme
: نظام تصحيح الأخطاء الكمومية (QEC)qubitParams
: معلمات qubit الفعليةconstraints
: القيود على مستوى المكونdistillationUnitSpecifications
: مواصفات خوارزميات تقطير مصانع TestimateType
: مفرد أو حدود
تغيير نموذج qubit
يمكنك تقدير تكلفة نفس الخوارزمية باستخدام معلمة qubit المستندة إلى Majorana، ، qubitParams
، qubit_maj_ns_e6
.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
}})
EstimateDetails(result_maj)
تغيير نظام تصحيح الأخطاء الكمومية
يمكنك إعادة تشغيل مهمة تقدير الموارد لنفس المثال على معلمات qubit المستندة إلى Majorana مع نظام QEC المرن، qecScheme
.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
}})
EstimateDetails(result_maj)
تغيير موازنة الخطأ
بعد ذلك، أعد تشغيل نفس الدائرة الكمومية بنسبة errorBudget
10٪.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
},
"errorBudget": 0.1})
EstimateDetails(result_maj)