Noções básicas sobre 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 em Jupyter Notebooks. Se você executar o Avaliador de Recursos no Visual Studio Code na paleta de comandos, os comandos a seguir não se aplicarão.
Pré-requisitos
Um ambiente Python com Python e Pip instalados.
A versão mais recente do Visual Studio Code ou abra o VS Code na Web.
VS Code com as extensões do Azure Quantum Development Kit, Python e Jupyter instaladas.
O Azure Quantum
qsharp
eqsharp-widgets
os pacotes mais recentes.python -m pip install --upgrade qsharp qsharp-widgets
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 recursos.
result['jobParams']
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 . |
jobParams |
dicionário | Os target parâmetros do trabalho que são passados como entrada. |
physicalCounts |
dicionário | As estimativas de recursos físicos. Para obter mais informações, consulte Contagens físicas. |
physicalCountsFormatted |
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. |
logicalQubit |
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. |
logicalCounts |
dicionário | As estimativas de recursos lógicos de pré-layout. Para obter mais informações, consulte Contagens lógicas. |
reportData |
dicionário | Geração de dados para relatório de estimativa de recursos. |
Contagens físicas
O physicalCounts
dicionário contém as seguintes entradas:
Parâmetro de saída | Tipo de dados | Descrição |
---|---|---|
physicalQubits |
número | O número total de qubits físicos. |
runtime |
número | O tempo de execução total para executar o algoritmo em nanossegundos. |
rqops |
número | O número de operações quânticas confiáveis por segundo (QOPS). |
breakdown |
dicionário | Repartição das estimativas. Para obter mais informações, consulte Detalhamento de contagens físicas. |
Detalhamento das contagens físicas
O breakdown
dicionário de physicalCounts
contém as seguintes entradas:
Parâmetro de saída | Tipo de dados | Descrição |
---|---|---|
algorithmicLogicalQubits |
número | Os qubits lógicos necessários para executar o algoritmo e não incluem recursos para fábricas T. |
algorithmicLogicalDepth |
número | Os ciclos lógicos necessários para executar o algoritmo e não incluem recursos para fábricas T. |
logicalDepth |
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 do que a execução do algoritmo. |
numTstates |
número | O número de estados T consumidos pelo algoritmo. |
clockFrequency |
número | O número de ciclos lógicos por segundo. |
numTfactories |
número | O número de fábricas T (assumindo um projeto uniforme de fábrica T). |
numTfactoryRuns |
número | O número de quantas vezes todas as fábricas T paralelas devem ser executadas. |
physicalQubitsForTfactories |
número | O número de qubits físicos para todas as fábricas T. |
physicalQubitsForAlgorithm |
número | O número de qubits físicos para o layout do algoritmo. |
requiredLogicalQubitErrorRate |
número | A taxa de erro lógico necessária. |
requiredLogicalTstateErrorRate |
número | A taxa de erro de estado T lógico necessária. |
numTsPerRotation |
número | O número de portas T por rotação. |
cliffordErrorRate |
número | A taxa de erro de Clifford com base nos parâmetros de qubit. |
Contagens físicas formatadas
O physicalCountsFormatted
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 string amigável para humanos. |
rqops |
string | O número de operações quânticas confiáveis por segundo (QOPS) formatadas com sufixo métrico. |
physicalQubits |
string | Número total de qubits físicos com sufixo métrico. |
algorithmicLogicalQubits |
string | Qubits lógicos algorítmicos com sufixo métrico. |
algorithmicLogicalDepth |
string | Profundidade lógica algorítmica com sufixo métrico. |
logicalDepth |
string | Profundidade lógica algorítmica possivelmente ajustada com sufixo métrico. |
numTstates |
string | Número de estados T com sufixo métrico. |
numTfactories |
string | Número de cópias de fábrica T com sufixo métrico. |
numTfactoryRuns |
string | Número de execuções de fábrica T com sufixo métrico. |
physicalQubitsForAlgorithm |
string | Número de qubits físicos para algoritmo com sufixo métrico. |
physicalQubitsForTfactories |
string | Número de qubits físicos para fábricas T com sufixo métrico. |
physicalQubitsForTfactoriesPercentage |
string | O número de qubits físicos para todas as fábricas T em porcentagem do total. |
requiredLogicalQubitErrorRate |
string | Taxa de erro de qubit lógico necessária truncada. |
requiredLogicalTstateErrorRate |
string | Taxa de erro de estado T necessária truncada. |
physicalQubitsPerLogicalQubit |
string | Número de qubits físicos por qubit lógico com sufixo métrico. |
logicalCycleTime |
string | O tempo de ciclo lógico de um qubit lógico como cadeia de caracteres amigável para humanos. |
clockFrequency |
string | O número de ciclos lógicos por segundo como uma cadeia de caracteres amigável para humanos. |
logicalErrorRate |
string | Taxa de erro lógico truncada. |
tfactoryPhysicalQubits |
string | Número de qubits físicos na fábrica T com sufixo métrico (ou mensagem de que não há fábrica T). |
tfactoryRuntime |
string | O tempo de execução de uma única fábrica T como cadeia de caracteres amigável para humanos (ou mensagem de que não há fábrica T). |
numInputTstates |
string | O número de estados T de entrada (ou mensagem de que não há fábrica T). |
numUnitsPerRound |
string | O número de unidades por rodada de destilação, separadas por vírgula em uma string (ou mensagem de que não há fábrica T). |
unitNamePerRound |
string | Os nomes das unidades de cada rodada de destilação, separados por vírgula em uma string (ou mensagem de que não há fábrica T). |
codeDistancePerRound |
string | O código distancia por rodada de destilação, separada por vírgula em uma string (ou mensagem de que não há fábrica T). |
physicalQubitsPerRound |
string | O número de qubits físicos por rodada de destilação, separados por vírgula em uma cadeia de caracteres (ou mensagem de que não há fábrica T). |
tfactoryRuntimePerRound |
string | O tempo de execução de cada rodada de destilação, exibido como strings amigáveis separadas por vírgulas (ou mensagem de que não há fábrica T). |
tstateLogicalErrorRate |
string | Taxa de erro de estado T lógico truncado (ou mensagem de que não há fábrica T). |
logicalCountsNumQubits |
string | Número de qubits (pré-layout) com sufixo métrico. |
logicalCountsTCount |
string | Número de portas T (pré-layout) com sufixo métrico. |
logicalCountsRotationCount |
string | Número de portas de rotação (pré-layout) com sufixo métrico. |
logicalCountsRotationDepth |
string | Profundidade de rotação (pré-layout) com sufixo métrico. |
logicalCountsCczCount |
string | Número de portas CCZ (pré-layout) com sufixo métrico. |
logicalCountsCcixCount |
string | Número de portas CCiX (pré-layout) com sufixo métrico. |
logicalCountsMeasurementCount |
string | Número de medições de qubit único (pré-layout) com sufixo métrico. |
errorBudget |
string | Orçamento de erro total truncado. |
errorBudgetLogical |
string | Orçamento de erro truncado para erro lógico. |
errorBudgetTstates |
string | Orçamento de erro truncado para destilação defeituosa do estado T. |
errorBudgetRotations |
string | Orçamento de erro truncado para síntese de rotação defeituosa. |
numTsPerRotation |
string | Número formatado de Ts por rotação (pode ser Nenhum). |
Qubit lógico
O logicalQubit
dicionário contém as seguintes entradas:
Parâmetro de saída | Tipo de dados | Descrição |
---|---|---|
codeDistance |
número | A distância do código calculado para o qubit lógico. |
physicalQubits |
número | O número de qubits físicos para cada qubit lógico. |
logicalCycleTime |
número | O tempo para executar uma operação lógica. |
logicalErrorRate |
número | A taxa de erro lógico do qubit lógico. |
Contagens lógicas
O logicalCounts
dicionário contém as seguintes entradas:
Parâmetro de saída | Tipo de dados | Descrição |
---|---|---|
numQubits |
número | Número de pré-layout de qubits. |
tCount |
número | Número de pré-layout de portas T. |
rotationCount |
número | Número de pré-layout de portões de rotação. |
rotationDepth |
número | Profundidade de rotação pré-layout. |
cczCount |
número | Número de pré-layout de portas CCZ. |
ccixCount |
número | Número de pré-layout de portas CCiX. |
measurementCount |
número | Número de pré-layout de medições de qubit único. |
Dica
Se você quiser usar um conjunto pré-calculado de contagens lógicas para um trabalho de estimativa de recursos, poderá usar a LogicalCounts
operação Python para passar as estimativas conhecidas para o Avaliador de Recursos. Para obter mais informações, consulte Como usar estimativas conhecidas com o Avaliador de Recursos.
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.
No 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)
Ao executar várias configurações de parâmetros com a estimativa de fronteira de target 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 tempo de execução 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 tempo de execução do algoritmo. Você pode considerar a alocação do maior número possível de qubits físicos para reduzir o tempo de execução 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. Compreender a compensação entre tempo de execução e 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 tempo de execução do algoritmo.
Observação
Para ver várias combinações ideais no diagrama de espaço-tempo, você precisa definir o tipo de estimativa para estimativa de fronteira de Pareto. Se você executar o Avaliador de Recursos no Visual Studio Code usando a Q#opção : Calcular Estimativas de Recursos , a estimativa de fronteira de Pareto será habilitada por padrão.
O diagrama de espaço-tempo permite que você encontre a combinação ideal de pares {número de qubits, tempo de execução} que satisfaçam as restrições do hardware quântico. O diagrama mostra o número de qubits físicos e o tempo de execução do algoritmo para cada par {número de qubits, tempo de execução}.
Para executar o diagrama de espaço-tempo no 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"])
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.
Observação
Se você tiver algum problema ao trabalhar com o Avaliador de recursos, verifique a página Solução de problemas ou entre em contato com AzureQuantumInfo@microsoft.com.
Próximas etapas
- Executar sua primeira estimativa de recursos
- Personalize estimativas de recursos de acordo com as características da máquina
- Diferentes maneiras de executar o Avaliador de Recursos
- Lidar com programas grandes com o Avaliador de Recursos
- Tutorial: Estimar os recursos de um problema de química quântica