Omówienie danych wynikowych narzędzia do szacowania zasobów

Dowiedz się, jak interpretować i pobierać parametry wyjściowe i 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 notesach Jupyter Notebook. Jeśli uruchomisz narzędzie do szacowania zasobów w Visual Studio Code z palety poleceń, następujące polecenia nie mają zastosowania.

Wymagania wstępne

Parametry wyjściowe

Dane wyjściowe narzędzia do szacowania zasobów to raport, który jest drukowany w konsoli programu i można uzyskać do nich dostęp programowo. Na przykład poniższy fragment kodu pokazuje, jak uzyskać dostęp do parametrów szacowania zasobów.

result['job_params']

Następujące dane wyjściowe stanowią możliwe wpisy, do których można uzyskać dostęp programowo.

Parametr wyjściowy najwyższego poziomu Typ danych Opis
status ciąg Stan zadania to zawsze Succeeded.
job_params Słownik target Parametry zadania, które są przekazywane jako dane wejściowe.
physical_counts Słownik Szacowany zasób fizyczny. Aby uzyskać więcej informacji, zobacz Liczby fizyczne.
physical_counts_formatted Słownik Szacowany zasób fizyczny sformatowany do wyświetlania w danych raportu. Aby uzyskać więcej informacji, zobacz Liczba fizyczne sformatowane.
logical_qubit Słownik Właściwości kubitu logicznego. Aby uzyskać więcej informacji, zobacz Kubit logiczny.
tfactory Słownik Właściwości fabryki T.
logical_counts Słownik Szacowanie zasobów logicznych w układzie wstępnym. Aby uzyskać więcej informacji, zobacz Liczba logicznych.
report_data Słownik Dane generowania raportu szacowania zasobów.

Liczby fizyczne

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

Parametr wyjściowy Typ danych Opis
physical_qubits liczba Całkowita liczba kubitów fizycznych.
runtime liczba Całkowite środowisko uruchomieniowe do wykonania algorytmu w nanosekundach.
rqops liczba Liczba niezawodnych operacji kwantowych na sekundę (QOPS).
breakdown Słownik Podział oszacowań. Aby uzyskać więcej informacji, zobacz Podział liczby fizyczne.

Podział liczby fizycznych

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

Parametr wyjściowy Typ danych Opis
algorithmic_logical_qubits liczba Kubity logiczne wymagane do uruchamiania algorytmu i nie obejmują zasobów dla fabryk T.
algorithmic_logical_depth liczba Cykle logiczne wymagane do uruchamiania algorytmu i nie obejmują zasobów dla fabryk T.
logical_depth liczba Ewentualnie skorygowana liczba cykli obliczanych za każdym razem, gdy czas wykonywania fabryki T jest krótszy niż wykonywanie algorytmu.
num_tstates liczba Liczba stanów T używanych przez algorytm.
clock_frequency liczba Liczba cykli logicznych na sekundę.
num_tfactories liczba Liczba fabryk T (przy założeniu jednolitego projektu fabryki T).
num_tfactory_runs liczba Liczba częstotliwości uruchamiania wszystkich równoległych fabryk T.
physical_qubits_for_tfactories liczba Liczba kubitów fizycznych dla wszystkich fabryk T.
physical_qubits_for_algorithm liczba Liczba kubitów fizycznych dla układu algorytmu.
required_logical_qubit_error_rate liczba Wymagana liczba błędów logicznych.
required_logical_tstate_error_rate liczba Wymagany współczynnik błędów stanu logicznego T.
num_ts_per_rotation liczba Liczba bramek T na obrót.
clifford_error_rate liczba Współczynnik błędów Cliffordu oparty na parametrach kubitu.

Sformatowane liczby fizyczne

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

Parametr wyjściowy Typ danych Opis
runtime ciąg Łączna liczba środowisk uruchomieniowych jako przyjaznego dla człowieka ciągu.
rqops ciąg Liczba niezawodnych operacji kwantowych na sekundę (QOPS) sformatowanych z sufiksem metryki.
physical_qubits ciąg Całkowita liczba kubitów fizycznych z sufiksem metryki.
algorithmic_logical_qubits ciąg Algorytmiczne kubity logiczne z sufiksem metryki.
algorithmic_logical_depth ciąg Algorytmiczna głębokość logiczna z sufiksem metryki.
logical_depth ciąg Ewentualnie skorygowana głębokość logiczna algorytmu z sufiksem metryki.
num_tstates ciąg Liczba stanów T z sufiksem metryki.
num_tfactories ciąg Liczba kopii fabrycznych T z sufiksem metryki.
num_tfactory_runs ciąg Liczba przebiegów fabryki T z sufiksem metryki.
physical_qubits_for_algorithm ciąg Liczba fizycznych kubitów algorytmu z sufiksem metryki.
physical_qubits_for_tfactories ciąg Liczba fizycznych kubitów dla fabryk T z sufiksem metryki.
physical_qubits_for_tfactories_percentage ciąg Liczba fizycznych kubitów dla wszystkich fabryk T w procentach do sumy.
required_logical_qubit_error_rate ciąg Obcięty wymagany współczynnik błędów kubitu logicznego.
required_logical_tstate_error_rate ciąg Obcięty wymagany współczynnik błędów stanu T.
physical_qubits_per_logical_qubit ciąg Liczba kubitów fizycznych na kubit logiczny z sufiksem metryki.
logical_cycle_time ciąg Czas cyklu logicznego kubitu logicznego jako przyjazny dla człowieka ciąg.
clock_frequency ciąg Liczba cykli logicznych na sekundę jako przyjazny dla człowieka ciąg.
logical_error_rate ciąg Obcięty współczynnik błędów logicznych.
tfactory_physical_qubits ciąg Liczba fizycznych kubitów w fabryce T z sufiksem metryki (lub komunikatem, że nie ma fabryki T).
tfactory_runtime ciąg Środowisko uruchomieniowe jednej fabryki T jako przyjazne dla człowieka ciąg (lub komunikat, że nie ma fabryki T).
num_input_tstates ciąg Liczba stanów wejściowych języka T (lub komunikatu, że nie ma fabryki T).
num_units_per_round ciąg Liczba jednostek na rundę destylacji, przecinek oddzielony ciągiem (lub komunikat, że nie ma fabryki T).
unit_name_per_round ciąg Nazwy jednostek każdej rundy destylowania, przecinki oddzielone ciągiem (lub komunikatem, że nie ma fabryki T).
code_distance_per_round ciąg Odległość kodu na rundę destylacji, przecinek oddzielony ciągiem (lub komunikat, że nie ma fabryki T).
physical_qubits_per_round ciąg Liczba fizycznych kubitów na rundę destylacji, przecinek rozdzielony w ciągu (lub komunikat, że nie ma fabryki T).
tfactory_runtime_per_round ciąg Środowisko uruchomieniowe każdej rundy destylowania, wyświetlane jako rozdzielone przecinkami ciągi przyjazne dla człowieka (lub komunikat, że nie ma fabryki T).
tstate_logical_error_rate ciąg Obcięty logiczny współczynnik błędów stanu T (lub komunikat, że nie ma fabryki T).
logical_counts_num_qubits ciąg Liczba kubitów (wstępnego układu) z sufiksem metryki.
logical_counts_t_count ciąg Liczba bram T (układ wstępny) z sufiksem metryki.
logical_counts_rotation_count ciąg Liczba bram rotacji (układ wstępny) z sufiksem metryki.
logical_counts_rotation_depth ciąg Głębokość obrotu (układ wstępny) z sufiksem metryki.
logical_counts_ccz_count ciąg Liczba bram CCZ (układ wstępny) z sufiksem metryki.
logical_counts_ccix_count ciąg Liczba bram CCiX (układ wstępny) z sufiksem metryki.
logical_counts_measurement_count ciąg Liczba pomiarów pojedynczego kubitu (wstępnego układu) z sufiksem metryki.
error_budget ciąg Obcięty całkowity budżet błędów.
error_budget_logical ciąg Obcięty budżet błędów dla błędu logicznego.
error_budget_tstates ciąg Obcięty budżet błędów dla wadliwego destylowania stanu T.
error_budget_rotations ciąg Obcięty budżet błędów dla błędnej syntezy rotacji.
num_ts_per_rotation ciąg Sformatowana liczba Ts na obrót (może to być wartość Brak).

Kubit logiczny

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

Parametr wyjściowy Typ danych Opis
code_distance liczba Obliczona odległość kodu dla kubitu logicznego.
physical_qubits liczba Liczba kubitów fizycznych dla każdego kubitu logicznego.
logical_cycle_time liczba Czas wykonywania jednej operacji logicznej.
logical_error_rate liczba Szybkość błędów logicznych kubitu logicznego.

Liczby logiczne

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

Parametr wyjściowy Typ danych Opis
num_qubits liczba Wstępnie układ liczby kubitów.
t_count liczba Wstępna liczba bram T.
rotation_count liczba Wstępnie układ bramek obrotu.
rotation_depth liczba Głębokość obrotu wstępnego układu.
ccz_count liczba Wstępnie układ bramek CCZ.
ccix_count liczba Wstępnie układ liczby bram CCiX.
measurement_count liczba Wstępnie utworzona liczba pomiarów pojedynczego kubitu.

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 kosmicznego.

Na diagramie kosmicznym przedstawiono 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 Jupyter Notebook możesz uzyskać dostęp do diagramu przestrzeni przy użyciu widżetu SpaceChartqsharp-widgets z pakietu.

import qsharp

from qsharp_widgets import SpaceChart
SpaceChart(result)

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

W przypadku uruchamiania wielu konfiguracji parametrów target z szacowaniem granicy Pareto można wykreślić diagram przestrzeni dla konkretnego rozwiązania. Na przykład poniższy kod pokazuje, jak wykreślić diagram przestrzeni dla pierwszej konfiguracji parametrów i trzeciego najkrótszego środowiska uruchomieniowego.

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

Diagram czasu przestrzeni

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ę fizycznych kubitów 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 czasu przestrzeni, aby zwizualizować kompromisy między liczbą fizycznych kubitów a środowiskiem uruchomieniowym algorytmu.

Uwaga

Aby wyświetlić wiele optymalnych kombinacji na diagramie czasu kosmicznego, należy ustawić typ szacowania na wartość Szacowanie granic Pareto. Jeśli uruchomisz narzędzie do szacowania zasobów w Visual Studio Code przy użyciu Q#opcji : Oblicz szacowanie zasobów, szacowanie granic Pareto jest domyślnie włączone.

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

Aby uruchomić diagram czasu przestrzeni w Jupyter Notebook, możesz użyć EstimatesOverview widżetu z qsharp-widgets pakietu.

import qsharp

from qsharp_widgets import EstimatesOverview

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

Zrzut ekranu przedstawiający diagram czasu kubitu narzędzia do szacowania zasobów.

Porada

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

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

Zrzut ekranu przedstawiający diagram czasu przestrzeni i tabelę wyników podczas uruchamiania wielu konfiguracji parametru w narzędziu do szacowania zasobów.

Uwaga

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

Następne kroki