Ćwiczenie — rozpoczynanie pracy z narzędziem do szacowania zasobów usługi Azure Quantum
Wypróbujmy narzędzie do szacowania zasobów usługi Azure Quantum. W poniższym przykładzie oszacowasz zasoby fizyczne próbki algorytmu Shora.
Instalowanie zestawów qsharp i qsharp-widget
Najpierw zainstaluj najnowszą wersję usługi Azure Quantum qsharp
i qsharp-widgets
pakietów.
python -m pip install --upgrade qsharp qsharp-widgets
Tworzenie algorytmu kwantowego
W programie Visual Studio Code wybierz pozycję Wyświetl paletę poleceń i wybierz pozycję Utwórz: nowy notes Jupyter.>
W pierwszej komórce notesu zaimportuj
qsharp
pakiet:import qsharp from qsharp_widgets import EstimateDetails
Dodaj nową komórkę i skopiuj następujący kod:
%%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; }
Szacowanie algorytmu kwantowego
Teraz szacuj zasoby fizyczne dla
RandomBit
operacji przy użyciu domyślnych założeń. Dodaj nową komórkę i skopiuj następujący kod:result = qsharp.estimate("RandomBit()") result
Funkcja
qsharp.estimate
tworzy obiekt wynikowy, który może służyć do wyświetlania tabeli z ogólną liczbą zasobów fizycznych. Pierwsza tabela przedstawia główne oszacowania zasobów fizycznych. OperacjaRandomBit
wymaga 300 kubitów i przyjmuje dwie mikrosekundy do uruchomienia na komputerze kwantowym.Szacowanie zasobów fizycznych Wartość Środowisko uruchomieniowe 2 mikrosekony rQOPS 3,00 mln Kubity fizyczne 300 Szczegóły kosztów można sprawdzić, zwijając grupy, które zawierają więcej informacji. Na przykład zwiń grupę Parametrów kubitu logicznego, aby zobaczyć, że odległość kodu wynosi 5, a liczba kubitów fizycznych na kubit logiczny wynosi 50.
Parametr kubitu logicznego Wartość Schemat QEC surface_code Odległość kodu 5 Kubity fizyczne 50 Czas cyklu logicznego 2 mikrosekony Szybkość błędów kubitu logicznego 3.00E-5 Wstępna przeprawa 0.03 Próg korekty błędu 0,01 Formuła czasu cyklu logicznego (4 * twoQubitGateTime
+ 2 *oneQubitMeasurementTime
) *codeDistance
Formuła kubitów fizycznych 2 * codeDistance
*codeDistance
Za pomocą
jobParams
pola można uzyskać dostęp do wszystkich parametrów docelowych, które można przekazać do wykonania zadania i sprawdzić, które wartości domyślne zostały przyjęte: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'}}
Widać, że narzędzie do szacowania zasobów przyjmuje model kubitu
qubit_gate_ns_e3
,surface_code
kod korekty błędu i budżet błędu 0,001 jako wartości domyślne szacowania.
Zmienianie wartości domyślnych i szacowanie algorytmu
Podczas przesyłania żądania szacowania zasobów dla programu można określić niektóre parametry opcjonalne. Są to parametry docelowe, które można dostosować:
errorBudget
: Ogólny dozwolony budżet błędów dla algorytmuqecScheme
: schemat poprawki błędów kwantowych (QEC)qubitParams
: parametry kubitu fizycznegoconstraints
: Ograniczenia na poziomie składnikadistillationUnitSpecifications
: specyfikacje algorytmów destylowania fabryk TestimateType
: Pojedyncza lub granica
Zmienianie modelu kubitu
Koszt dla tego samego algorytmu można oszacować przy użyciu parametru kubitu opartego na majoranie, qubitParams
, qubit_maj_ns_e6
.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
}})
EstimateDetails(result_maj)
Zmienianie schematu korekty błędów kwantowych
Możesz ponownie uruchomić zadanie szacowania zasobów dla tego samego przykładu na podstawie parametrów kubitu opartego na Majorana ze schematem qecScheme
QEC floqued.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
}})
EstimateDetails(result_maj)
Zmiana budżetu błędu
Następnie ponownie uruchom ten sam obwód kwantowy z wartością errorBudget
10%.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
},
"errorBudget": 0.1})
EstimateDetails(result_maj)