تمرين - ابدأ باستخدام Azure Quantum Resource Estimator

مكتمل

دعونا نتدرب على استخدام Azure Quantum Resource Estimator. في المثال التالي، يمكنك تقدير الموارد المادية لعينة خوارزمية Shor.

تثبيت qsharp وqsharp-widgets

أولا، قم بتثبيت أحدث حزم وAzure qsharp-widgets Quantumqsharp.

python -m pip install --upgrade qsharp qsharp-widgets 

إنشاء خوارزمية المقدار

  1. في Visual Studio Code، حدد View > Command palette وحدد Create: New Jupyter Notebook.

  2. في الخلية الأولى لدفتر الملاحظات، قم باستيراد الحزمة qsharp :

    import qsharp
    from qsharp_widgets import EstimateDetails
    
  3. أضف خلية جديدة وانسخ التعليمات البرمجية التالية:

    %%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;
        }
    

تقدير خوارزمية المقدار

  1. الآن، قم بتقدير الموارد المادية للعملية RandomBit باستخدام الافتراضات الافتراضية. أضف خلية جديدة وانسخ التعليمات البرمجية التالية:

    result = qsharp.estimate("RandomBit()")
    result
    

    qsharp.estimate تنشئ الدالة كائن نتيجة، والذي يمكن استخدامه لعرض جدول مع عدد الموارد الفعلية الإجمالية. يعرض الجدول الأول تقديرات الموارد المادية الرئيسية. RandomBit تتطلب العملية 300 كيوبت وتأخذ ميكرو ثانية للتشغيل على كمبيوتر كمومي.

    تقديرات الموارد الفعلية القيمة‬
    وقت التشغيل 2 microsecs
    rQOPS 3.00 مليون
    البتات الكمومية الفعلية 300
  2. يمكنك فحص تفاصيل التكلفة عن طريق طي المجموعات التي تحتوي على مزيد من المعلومات. على سبيل المثال، قم بطي مجموعة معلمات 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
  3. يمكنك استخدام 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: مواصفات خوارزميات تقطير مصانع T
  • estimateType: مفرد أو حدود

تغيير نموذج 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)