Udostępnij za pomocą


Pobieranie danych wyjściowych narzędzia do szacowania zasobów

Dowiedz się, jak interpretować i pobierać parametry wyjściowe oraz diagramy narzędzia do szacowania zasobów. W tym artykule wyjaśniono, jak programowo uzyskać dostęp do wyników narzędzia do szacowania zasobów w notesie Jupyter w programie Visual Studio Code (VS Code).

Wymagania wstępne

Uwaga

Jeśli uruchomisz narzędzie do szacowania zasobów w programie VS Code z palety poleceń, następujące polecenia nie mają zastosowania. Aby uzyskać więcej informacji, zobacz Różne sposoby uruchamiania narzędzia do szacowania zasobów.

Parametry wyjściowe

Dane wyjściowe z narzędzia do szacowania zasobów to raport wydrukowany w konsoli programu i umożliwiający dostęp programowy. Na przykład poniższy fragment kodu wyświetla wartości wszystkich parametrów narzędzia do szacowania zasobów:

result['jobParams']

Poniższa tabela zawiera typ danych i krótki opis każdego parametru wyjściowego.

Parametr wyjściowy najwyższego poziomu Typ danych opis
status ciąg Stan zadania to zawsze Succeeded.
jobParams słownik Parametry target zadania, które są przekazywane jako wejście.
physicalCounts słownik Szacowany zasób fizyczny. Aby uzyskać więcej informacji, zobacz Fizyczne liczenie.
physicalCountsFormatted słownik Szacowane zasoby fizyczne sformatowane do wyświetlania w danych raportu. Aby uzyskać więcej informacji, zobacz Liczba fizyczne sformatowane.
logicalQubit słownik Właściwości kubitu logicznego. Aby uzyskać więcej informacji, zobacz Logiczny kubit.
tfactory słownik Właściwości fabryki T.
logicalCounts słownik Wstępne szacunki zasobów logicznych przed rozmieszczeniem. Aby uzyskać więcej informacji, zobacz Liczby logiczne.
reportData słownik Dane generowania raportu szacowania zasobów.

Inwentaryzacja fizyczna

Słownik physicalCounts zawiera następujące wpisy:

Parametr wyjściowy Typ danych opis
physicalQubits Liczba Całkowita liczba kubitów fizycznych.
runtime Liczba Całkowity czas wykonania algorytmu w nanosekundach.
rqops Liczba Liczba niezawodnych operacji kwantowych na sekundę (QOPS).
breakdown słownik Podział oszacowań. Aby uzyskać więcej informacji, zobacz szczegóły inwentaryzacji fizycznej.

Podział fizycznych ilości

Słownik breakdown dla physicalCounts zawiera następujące wpisy:

Parametr wyjściowy Typ danych opis
algorithmicLogicalQubits Liczba Kubity logiczne wymagane do uruchomienia algorytmu i nie obejmują zasobów dla fabryk T.
algorithmicLogicalDepth Liczba Cykle logiczne wymagane do uruchomienia algorytmu i nie obejmują zasobów dla fabryk T.
logicalDepth Liczba Ewentualnie skorygowana liczba cykli obliczanych za każdym razem, gdy czas wykonywania fabryki T jest szybszy niż wykonywanie algorytmu.
numTstates Liczba Liczba stanów T używanych przez algorytm.
clockFrequency Liczba Liczba cykli logicznych na sekundę.
numTfactories Liczba Liczba fabryk T (zakłada jednolity projekt fabryki T).
numTfactoryRuns Liczba Liczba częstotliwości uruchamiania wszystkich równoległych fabryk T.
physicalQubitsForTfactories Liczba Liczba kubitów fizycznych dla wszystkich fabryk typu T.
physicalQubitsForAlgorithm Liczba Liczba kubitów fizycznych dla układu algorytmu.
requiredLogicalQubitErrorRate Liczba Wymagana liczba błędów logicznych.
requiredLogicalTstateErrorRate Liczba Wymagana liczba błędów stanu logicznego T.
numTsPerRotation Liczba Liczba bram T na obrót.
cliffordErrorRate Liczba Współczynnik błędów Cliffordu oparty na parametrach kubitu.

Liczba fizyczna sformatowana

Słownik physicalCountsFormatted zawiera następujące wpisy:

Parametr wyjściowy Typ danych opis
runtime ciąg Całkowity czas wykonywania w formacie przyjaznym dla użytkownika.
rqops ciąg Liczba niezawodnych operacji kwantowych na sekundę (QOPS) ujętych z przedrostkiem metrycznym.
physicalQubits ciąg Całkowita liczba kubitów fizycznych z sufiksem metryki.
algorithmicLogicalQubits ciąg Algorytmiczne kubity logiczne z sufiksem metrycznym.
algorithmicLogicalDepth ciąg Algorytmiczna głębokość logiczna z sufiksem metrycznym.
logicalDepth ciąg Możliwie skorygowana algorytmiczna głębokość logiczna z sufiksem metrycznym.
numTstates ciąg Liczba stanów T z sufiksem metryki.
numTfactories ciąg Liczba fabrycznych kopii T z sufiksem metrycznym.
numTfactoryRuns ciąg Liczba uruchomień fabryki T z sufiksem jednostki miary.
physicalQubitsForAlgorithm ciąg Liczba fizycznych kubitów algorytmu z sufiksem metryki.
physicalQubitsForTfactories ciąg Liczba kubitów fizycznych dla fabryk T z metrycznym sufiksem.
physicalQubitsForTfactoriesPercentage ciąg Liczba kubitów fizycznych dla wszystkich fabryk T w procentach do sumy.
requiredLogicalQubitErrorRate ciąg Skrócony wymagany logiczny współczynnik błędów kubitu.
requiredLogicalTstateErrorRate ciąg Skrócony wymagany współczynnik błędów stanu T.
physicalQubitsPerLogicalQubit ciąg Liczba kubitów fizycznych na kubit logiczny z metrycznym sufiksem.
logicalCycleTime ciąg Logiczny czas cyklu logicznego kubitu jako przyjazny dla człowieka ciąg.
clockFrequency ciąg Liczba cykli logicznych na sekundę jako ciąg znaków przyjazny dla użytkownika.
logicalErrorRate ciąg Skrócony logiczny współczynnik błędów.
tfactoryPhysicalQubits ciąg Liczba kubitów fizycznych w fabryce T z sufiksem metrycznym (lub komunikatem, że nie ma fabryki T).
tfactoryRuntime ciąg Czas działania pojedynczej fabryki T jako ciąg znaków czytelny dla użytkownika (lub wiadomość, że nie ma fabryki T).
numInputTstates ciąg Liczba stanów wejściowych T lub informacja, że nie ma fabryki T.
numUnitsPerRound ciąg Liczba jednostek na rundę destylacji rozdzielona przecinkami w ciągu (lub komunikat, że nie ma fabryki T).
unitNamePerRound ciąg Nazwy jednostek każdej rundy destylacji, rozdzielone przecinkami w ciągu (lub informacja, że nie ma fabryki T).
codeDistancePerRound ciąg Odległość kodu na rundę destylacji, przecinek oddzielony ciągiem (lub komunikatem, że nie ma fabryki T).
physicalQubitsPerRound ciąg Liczba kubitów fizycznych na rundę destylacji, rozdzielona przecinkami w formie ciągu znaków (lub wiadomość, że nie ma fabryki T).
tfactoryRuntimePerRound ciąg Czas trwania każdej rundy destylacji, wyświetlany jako ciągi przyjazne dla człowieka rozdzielone przecinkami (lub komunikat, że nie ma fabryki T).
tstateLogicalErrorRate ciąg Skrócony współczynnik błędów stanu logicznego T (lub komunikat, że nie ma fabryki T).
logicalCountsNumQubits ciąg Liczba kubitów (układ wstępny) z metrycznym sufiksem.
logicalCountsTCount ciąg Liczba bram T (przed rozmieszczeniem) z sufiksem jednostki miary.
logicalCountsRotationCount ciąg Liczba bram rotacji (układ wstępny) z sufiksem metryki.
logicalCountsRotationDepth ciąg Głębokość obrotu (układ wstępny) z sufiksem metryki.
logicalCountsCczCount ciąg Liczba bram CCZ (w układzie wstępnym) z dołączonym oznaczeniem metryki.
logicalCountsCcixCount ciąg Liczba bram CCiX (przed rozmieszczeniem) z przedrostkiem metrycznym.
logicalCountsMeasurementCount ciąg Liczba pomiarów pojedynczego kubitu (układ wstępny) z sufiksem metryki.
errorBudget ciąg Skrócony całkowity budżet błędów.
errorBudgetLogical ciąg Skrócony budżet błędów dla błędu logicznego.
errorBudgetTstates ciąg Obcięty budżet błędów dla wadliwej destylacji stanu T.
errorBudgetRotations ciąg Obcięty budżet błędów dla wadliwej syntezy rotacji.
numTsPerRotation ciąg Sformatowana liczba Ts na obrót (może być wartością pustą).

Kubit logiczny

Słownik logicalQubit zawiera następujące wpisy:

Parametr wyjściowy Typ danych opis
codeDistance Liczba Obliczona odległość kodu dla kubitu logicznego.
physicalQubits Liczba Liczba kubitów fizycznych dla każdego kubitu logicznego.
logicalCycleTime Liczba Czas wykonywania jednej operacji logicznej.
logicalErrorRate Liczba Logiczna szybkość błędów kubitu logicznego.

Liczby logiczne

Słownik logicalCounts zawiera następujące wpisy:

Parametr wyjściowy Typ danych opis
numQubits Liczba Liczba kubitów przed rozmieszczeniem.
tCount Liczba Liczba bram T przed rozmieszczeniem.
rotationCount Liczba Wstępna liczba bram obrotu.
rotationDepth Liczba Głębokość rotacji przed rozmieszczeniem.
cczCount Liczba Wstępna liczba bram CCZ.
ccixCount Liczba Wstępna liczba bram CCiX.
measurementCount Liczba Wstępnie układ liczby pomiarów pojedynczego kubitu.

Napiwek

Jeśli chcesz użyć wstępnie obliczonego zestawu liczb logicznych dla zadania szacowania zasobów, możesz użyć LogicalCounts operacji Python, aby przekazać znane oszacowania do Resource Estimator. Aby uzyskać więcej informacji, zobacz How to use known estimates with the Resource Estimator (Jak używać znanych oszacowań za pomocą narzędzia do szacowania zasobów).

Diagram przestrzeni

Ogólne szacowanie zasobów fizycznych składa się z całkowitej liczby kubitów fizycznych używanych zarówno dla algorytmu, jak i kopii fabrycznych T. Rozkład między nimi można sprawdzić przy użyciu diagramu przestrzeni.

Diagram przestrzeni pokazuje proporcję fizycznych kubitów używanych dla algorytmu i fabryk T. Należy pamiętać, że liczba kopii fabrycznych T przyczynia się do liczby fizycznych kubitów dla fabryk T.

W notesie Jupyter możesz uzyskać dostęp do diagramu przestrzeni przy użyciu widżetu SpaceChart z pakietu widgets.

from qdk.widgets import SpaceChart

SpaceChart(result)

Diagram kołowy przedstawiający rozkład całkowitych kubitów fizycznych między kubitami algorytmu a kubitami instancji T. Istnieje tabela z podziałem liczby kopii instancji T i liczby kubitów fizycznych na instancję T.

Podczas uruchamiania wielu konfiguracji parametrów z szacowaniem granicy Pareto, można wykreślić diagram przestrzeni dla określonego rozwiązania. Na przykład poniższy kod pokazuje, jak wykreślić diagram przestrzeni dla pierwszej konfiguracji parametrów i trzeciego najkrótszego czasu wykonania.

SpaceChart(result[0], 2) # First (estimate index=0) run and third (point index=2) shortest runtime

Diagram czasu kosmicznego

W obliczeniach kwantowych istnieje kompromis między liczbą fizycznych kubitów a środowiskiem uruchomieniowym algorytmu. Możesz rozważyć alokację jak największej liczby kubitów fizycznych, aby zmniejszyć środowisko uruchomieniowe algorytmu. Jednak liczba kubitów fizycznych jest ograniczona przez liczbę kubitów fizycznych dostępnych na sprzęcie kwantowym. Zrozumienie kompromisu między środowiskiem uruchomieniowym a skalowaniem systemu jest jednym z ważniejszych aspektów szacowania zasobów.

Podczas szacowania zasobów algorytmu można użyć diagramu czasowego do wizualizacji kompromisów między liczbą kubitów fizycznych a środowiskiem uruchomieniowym algorytmu.

Uwaga

Aby wyświetlić wiele optymalnych kombinacji na diagramie czasoprzestrzennym, należy ustawić typ szacowania na szacowanie frontu Pareto. Jeśli uruchomisz narzędzie do szacowania zasobów w programie Visual Studio Code za pomocą zestawu QDK: Oblicz szacowanie zasobów , szacowanie granic Pareto jest domyślnie włączone.

Diagram czasu kosmicznego umożliwia znalezienie optymalnej kombinacji {liczby kubitów, środowiska uruchomieniowego} par, które spełniają ograniczenia sprzętu kwantowego. Diagram przedstawia liczbę kubitów fizycznych i czas wykonania algorytmu dla każdej pary {liczba kubitów, czas wykonania}.

Aby uruchomić diagram czasoprzestrzenny w notesie Jupyter, użyj widżetu EstimatesOverview z pakietu widgets.

from qdk.widgets import EstimatesOverview

EstimatesOverview(result, colors=["#1f77b4", "#ff7f0e"], runNames=["e4 Surface Code", "e6 Floquet Code"])

Screenshot showing the qubit-time diagram of the Resource Estimator.Zrzut ekranu przedstawiający diagram czasu kubitu w Estymatorze zasobów.

Napiwek

Aby wyświetlić szczegóły szacowania, możesz umieścić wskaźnik myszy na każdym punkcie na diagramie.

Diagram czasoprzestrzenny jest szczególnie przydatny podczas porównywania wielu konfiguracji parametrów target dla tego samego algorytmu.

Screenshot showing the space-time diagram and the table of results when running multiple configurations of parameter in the Resource Estimator.Zrzut ekranu przedstawiający diagram czasoprzestrzenny i tabelę wyników podczas uruchamiania wielu konfiguracji parametrów w narzędziu do szacowania zasobów.

Uwaga

Jeśli występują problemy podczas pracy z narzędziem do szacowania zasobów, zobacz stronę Rozwiązywanie problemów lub skontaktuj się z .AzureQuantumInfo@microsoft.com

Następne kroki