Entender os dados de resultado do Avaliador de Recursos

Saiba como interpretar e recuperar os parâmetros de saída e diagramas do Avaliador de Recursos. Este artigo explica como acessar programaticamente os resultados do Avaliador de Recursos no Jupyter Notebooks. Se você executar o Avaliador de Recursos em Visual Studio Code na paleta de comandos, os comandos a seguir não se aplicarão.

Pré-requisitos

Parâmetros de saída

Os dados de saída do Avaliador de Recursos são um relatório impresso no console e podem ser acessados programaticamente. Por exemplo, o snippet de código a seguir mostra como acessar os parâmetros de estimativa de recurso.

result['job_params']

Os dados de saída a seguir constituem as entradas possíveis que podem ser acessadas programaticamente.

Parâmetro de saída de nível superior Tipo de dados Descrição
status string O status do trabalho, é sempre Succeeded.
job_params dicionário Os target parâmetros do trabalho que são passados como entrada.
physical_counts dicionário As estimativas de recursos físicos. Para obter mais informações, consulte Contagens físicas.
physical_counts_formatted dicionário As estimativas de recursos físicos formatadas para exibição nos dados do relatório. Para obter mais informações, consulte Contagens físicas formatadas.
logical_qubit dicionário As propriedades lógicas do qubit. Para obter mais informações, consulte Qubit lógico.
tfactory dicionário As propriedades da fábrica T.
logical_counts dicionário As estimativas de recursos lógicos de pré-layout. Para obter mais informações, consulte Contagens lógicas.
report_data dicionário Dados de geração para o relatório de estimativa de recursos.

Contagens físicas

O physical_counts dicionário contém as seguintes entradas:

Parâmetro de saída Tipo de dados Descrição
physical_qubits número O número total de qubits físicos.
runtime número O runtime total para executar o algoritmo em nanossegundos.
rqops número O número de QOPS (operações quânticas confiáveis por segundo).
breakdown dicionário Detalhamento das estimativas. Para obter mais informações, consulte Divisão de contagens físicas.

Divisão de contagens físicas

O breakdown dicionário de physical_counts contém as seguintes entradas:

Parâmetro de saída Tipo de dados Descrição
algorithmic_logical_qubits número Os qubits lógicos necessários para executar o algoritmo e não incluem recursos para fábricas T.
algorithmic_logical_depth número Os ciclos lógicos necessários para executar o algoritmo e não incluem recursos para fábricas T.
logical_depth número O número possivelmente ajustado de ciclos que é calculado sempre que o tempo de execução da fábrica T é mais rápido e, em seguida, a execução do algoritmo.
num_tstates número O número de estados T consumidos pelo algoritmo.
clock_frequency número O número de ciclos lógicos por segundo.
num_tfactories número O número de fábricas T (supondo design de fábrica T uniforme).
num_tfactory_runs número O número de frequência com que todas as fábricas T paralelas devem ser executadas.
physical_qubits_for_tfactories número O número de qubits físicos para todas as fábricas T.
physical_qubits_for_algorithm número O número de qubits físicos para o layout do algoritmo.
required_logical_qubit_error_rate número A taxa de erro lógica necessária.
required_logical_tstate_error_rate número A taxa de erro de estado T lógica necessária.
num_ts_per_rotation número O número de portões T por rotação.
clifford_error_rate número A taxa de erro clifford com base nos parâmetros qubit.

Contagens físicas formatadas

O physical_counts_formatted dicionário contém as seguintes entradas:

Parâmetro de saída Tipo de dados Descrição
runtime string Tempo de execução total como cadeia de caracteres amigável para humanos.
rqops string O número de QOPS (operações quânticas confiáveis por segundo) formatadas com sufixo de métrica.
physical_qubits string Número total de qubits físicos com sufixo de métrica.
algorithmic_logical_qubits string Qubits lógicos algorítmicos com sufixo de métrica.
algorithmic_logical_depth string Profundidade lógica algorítmica com sufixo de métrica.
logical_depth string Profundidade lógica algorítmica possivelmente ajustada com sufixo de métrica.
num_tstates string Número de estados T com sufixo de métrica.
num_tfactories string Número de cópias de fábrica T com sufixo de métrica.
num_tfactory_runs string Número de execuções de fábrica T com sufixo de métrica.
physical_qubits_for_algorithm string Número de qubits físicos para algoritmo com sufixo de métrica.
physical_qubits_for_tfactories string Número de qubits físicos para fábricas T com sufixo de métrica.
physical_qubits_for_tfactories_percentage string O número de qubits físicos para todas as fábricas T em percentual para o total.
required_logical_qubit_error_rate string Taxa de erro de qubit lógico obrigatória truncada.
required_logical_tstate_error_rate string Taxa de erro de estado T truncada necessária.
physical_qubits_per_logical_qubit string Número de qubits físicos por qubit lógico com sufixo de métrica.
logical_cycle_time string A hora do ciclo lógico de um qubit lógico como cadeia de caracteres amigável para humanos.
clock_frequency string O número de ciclos lógicos por segundo como uma cadeia de caracteres amigável para humanos.
logical_error_rate string Taxa de erros lógicos truncados.
tfactory_physical_qubits string Número de qubits físicos na fábrica T com sufixo de métrica (ou mensagem informando que não há fábrica T).
tfactory_runtime string O runtime de uma única fábrica T como cadeia de caracteres amigável para humanos (ou mensagem de que não há fábrica T).
num_input_tstates string O número de estados T de entrada (ou mensagem de que não há fábrica T).
num_units_per_round string O número de unidades por rodada de destilação, vírgula separada em uma cadeia de caracteres (ou mensagem de que não há fábrica T).
unit_name_per_round string Os nomes de unidade de cada rodada de destilação, vírgula separada em uma cadeia de caracteres (ou mensagem de que não há fábrica T).
code_distance_per_round string As distâncias de código por rodada de destilação, vírgula separadas em uma cadeia de caracteres (ou mensagem de que não há fábrica T).
physical_qubits_per_round string O número de qubits físicos por rodada de destilação, vírgula separada em uma cadeia de caracteres (ou mensagem de que não há fábrica T).
tfactory_runtime_per_round string O runtime de cada rodada de destilação, exibido como cadeias de caracteres amigáveis humanas separadas por vírgulas (ou mensagem de que não há fábrica T).
tstate_logical_error_rate string Taxa de erro de estado T lógico truncado (ou mensagem informando que não há fábrica T).
logical_counts_num_qubits string Número de qubits (pré-layout) com sufixo de métrica.
logical_counts_t_count string Número de portões T (pré-layout) com sufixo de métrica.
logical_counts_rotation_count string Número de portas de rotação (pré-layout) com sufixo de métrica.
logical_counts_rotation_depth string Profundidade de rotação (pré-layout) com sufixo de métrica.
logical_counts_ccz_count string Número de portões CCZ (pré-layout) com sufixo de métrica.
logical_counts_ccix_count string Número de portões CCiX (pré-layout) com sufixo de métrica.
logical_counts_measurement_count string Número de medidas de qubit único (pré-layout) com sufixo de métrica.
error_budget string Orçamento total de erros truncado.
error_budget_logical string Orçamento de erro truncado para erro lógico.
error_budget_tstates string Orçamento de erro truncado para destilação de estado T com falha.
error_budget_rotations string Orçamento de erro truncado para síntese de rotação com falha.
num_ts_per_rotation string Número formatado de Ts por rotação (pode ser Nenhum).

Qubit lógico

O logical_qubit dicionário contém as seguintes entradas:

Parâmetro de saída Tipo de dados Descrição
code_distance número A distância de código computada para o qubit lógico.
physical_qubits número O número de qubits físicos para cada qubit lógico.
logical_cycle_time número O tempo para executar uma operação lógica.
logical_error_rate número A taxa de erro lógica do qubit lógico.

Contagens lógicas

O logical_counts dicionário contém as seguintes entradas:

Parâmetro de saída Tipo de dados Descrição
num_qubits número Número pré-layout de qubits.
t_count número Número de pré-layout de portões T.
rotation_count número Número de pré-layout de portões de rotação.
rotation_depth número Profundidade de rotação de pré-layout.
ccz_count número Número de pré-layout de portões CCZ.
ccix_count número Número de pré-layout de portões CCiX.
measurement_count número Número de pré-layout de medidas de qubit único.

Diagrama de espaço

A estimativa geral de recursos físicos consiste no número total de qubits físicos usados para o algoritmo e as cópias de fábrica T. Você pode inspecionar a distribuição entre esses dois usando o diagrama de espaço.

O diagrama de espaço mostra a proporção dos qubits físicos usados para o algoritmo e as fábricas T. Observe que o número de cópias de fábrica T contribui para o número de qubits físicos para fábricas T.

Em Jupyter Notebook, você pode acessar o diagrama de espaço usando o SpaceChart widget do qsharp-widgets pacote.

import qsharp

from qsharp_widgets import SpaceChart
SpaceChart(result)

Diagrama de pizza mostrando a distribuição do total de qubits físicos entre qubits de algoritmo e qubits de fábrica T. Há uma tabela com a divisão do número de cópias de fábrica T e o número de qubits físicos por fábrica T.

Ao executar várias configurações de target parâmetros com a estimativa de fronteira pareto, você pode plotar o diagrama de espaço para uma solução específica do . Por exemplo, o código a seguir mostra como plotar o diagrama de espaço para a primeira configuração de parâmetros e o terceiro runtime mais curto.

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

Diagrama de espaço-tempo

Na computação quântica, há uma compensação entre o número de qubits físicos e o runtime do algoritmo. Você pode considerar a alocação do maior número possível de qubits físicos para reduzir o runtime do algoritmo. No entanto, o número de qubits físicos é limitado pelo número de qubits físicos disponíveis no hardware quântico. Entender a compensação entre o runtime e a escala do sistema é um dos aspectos mais importantes da estimativa de recursos.

Ao estimar os recursos de um algoritmo, você pode usar o diagrama de espaço-tempo para visualizar as compensações entre o número de qubits físicos e o runtime do algoritmo.

Observação

Para ver várias combinações ideais no diagrama espaço-tempo, você precisa definir o tipo de estimativa como estimativa de fronteira pareto. Se você executar o Avaliador de Recursos no Visual Studio Code usando a opção Q#: Calcular Estimativas de Recursos, a estimativa de fronteira pareto será habilitada por padrão.

O diagrama de tempo de espaço permite que você encontre a combinação ideal de {número de qubits, runtime} pares que satisfaçam as restrições do hardware quântico. O diagrama mostra o número de qubits físicos e o runtime do algoritmo para cada par {número de qubits, runtime}.

Para executar o diagrama de tempo de espaço em Jupyter Notebook, você pode usar o EstimatesOverview widget do qsharp-widgets pacote.

import qsharp

from qsharp_widgets import EstimatesOverview

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

Captura de tela mostrando o diagrama qubit-time do Avaliador de Recursos.

Dica

Para ver os detalhes da estimativa, você pode passar o mouse sobre cada ponto no diagrama.

O diagrama de espaço-tempo é especialmente útil ao comparar várias configurações de target parâmetros para o mesmo algoritmo.

Captura de tela mostrando o diagrama de tempo de espaço e a tabela de resultados ao executar várias configurações de parâmetro no Avaliador de Recursos.

Observação

Se você tiver algum problema ao trabalhar com o Avaliador de Recursos, marcar a página Solução de problemas ou entre em contato com AzureQuantumInfo@microsoft.com.

Próximas etapas