Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Saiba como interpretar e recuperar os parâmetros de saída e diagramas do Resource Estimator. Este artigo explica como acessar programaticamente os resultados do Resource Estimator em um bloco de anotações Jupyter no Visual Studio Code (VS Code).
Pré-requisitos
Um ambiente Python com Python e Pip instalados.
A última versão do VS Code ou abra o VS Code na Web.
VS Code com as extensões Azure Quantum Development Kit, Python e Jupyter instaladas.
A mais recente
qdkbiblioteca Python com ojupyterextra.python -m pip install --upgrade "qdk[jupyter]"
Nota
Se você executar o Resource Estimator no VS Code a partir da paleta de comandos, os comandos a seguir não se aplicam. Para obter mais informações, consulte Diferentes maneiras de executar o Estimador de Recursos.
Parâmetros de saída
A saída do Resource Estimator é um relatório que é impresso no console e que você pode acessar programaticamente. Por exemplo, o trecho de código a seguir exibe os valores de todos os parâmetros do Resource Estimator:
result['jobParams']
A tabela a seguir contém o tipo de dados e uma breve descrição para cada parâmetro de saída.
| Parâmetro de saída de nível superior | Tipo de dados | Descrição |
|---|---|---|
status |
cadeia (de caracteres) | O status do trabalho, é sempre Succeeded. |
jobParams |
dicionário | Os parâmetros do posto que são passados como dados de 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 antes do layout. Para mais informações, consulte Contagens lógicas. |
reportData |
dicionário | Dados de geração para relatório de estimativa de recursos. |
Contagens físicas
O physicalCounts dicionário contémS 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 | Discriminação das estimativas. Para obter mais informações, consulte Detalhes de contagens físicas. |
Desagregação 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 não incluem os 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 (pressupõe o design uniforme da fábrica T). |
numTfactoryRuns |
Número | O número de freqüência com que todas as fábricas T paralelas devem funcionar. |
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 a disposição do algoritmo. |
requiredLogicalQubitErrorRate |
Número | A taxa de erro lógica exigida. |
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 |
cadeia (de caracteres) | Tempo de execução total como cadeia de caracteres humana amigável. |
rqops |
cadeia (de caracteres) | O número de operações quânticas confiáveis por segundo (QOPS) formatadas com sufixo métrico. |
physicalQubits |
cadeia (de caracteres) | Número total de qubits físicos com sufixo métrico. |
algorithmicLogicalQubits |
cadeia (de caracteres) | Qubits lógicos algorítmicos com sufixo métrico. |
algorithmicLogicalDepth |
cadeia (de caracteres) | Profundidade lógica algorítmica com sufixo métrico. |
logicalDepth |
cadeia (de caracteres) | Profundidade lógica algorítmica possivelmente ajustada com sufixo métrico. |
numTstates |
cadeia (de caracteres) | Número de estados T com sufixo métrico. |
numTfactories |
cadeia (de caracteres) | Número de cópias de fábrica T com sufixo métrico. |
numTfactoryRuns |
cadeia (de caracteres) | Número de execuções da fábrica T com sufixo métrico. |
physicalQubitsForAlgorithm |
cadeia (de caracteres) | Número de qubits físicos para algoritmo com sufixo métrico. |
physicalQubitsForTfactories |
cadeia (de caracteres) | Número de qubits físicos para fábricas T com sufixo métrico. |
physicalQubitsForTfactoriesPercentage |
cadeia (de caracteres) | O número de qubits físicos para todas as fábricas T em porcentagem para o total. |
requiredLogicalQubitErrorRate |
cadeia (de caracteres) | Taxa de erro requerida de qubit lógico truncada. |
requiredLogicalTstateErrorRate |
cadeia (de caracteres) | Taxa de erro necessária para o estado T truncada. |
physicalQubitsPerLogicalQubit |
cadeia (de caracteres) | Número de qubits físicos por qubit lógico com sufixo métrico. |
logicalCycleTime |
cadeia (de caracteres) | O tempo de ciclo lógico de um qubit lógico como cadeia amigável humana. |
clockFrequency |
cadeia (de caracteres) | O número de ciclos lógicos por segundo como uma cadeia amigável para humanos. |
logicalErrorRate |
cadeia (de caracteres) | Taxa de erro lógico truncada. |
tfactoryPhysicalQubits |
cadeia (de caracteres) | 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 |
cadeia (de caracteres) | O tempo de execução de uma única fábrica T como cadeia de caracteres humana amigável (ou mensagem de que não há fábrica T). |
numInputTstates |
cadeia (de caracteres) | O número de estados T de entrada (ou a mensagem indicando que não há uma fábrica T). |
numUnitsPerRound |
cadeia (de caracteres) | O número de unidades por ciclo de destilação, separado por vírgulas em uma cadeia de caracteres (ou mensagem indicando que não existe uma fábrica T). |
unitNamePerRound |
cadeia (de caracteres) | Os nomes das unidades de cada rodada de destilação, separados por vírgula em uma string (ou uma mensagem indicando que não há fábrica T). |
codeDistancePerRound |
cadeia (de caracteres) | As distâncias de código por rodada de destilação, separadas por vírgulas numa string (ou mensagem de que não há fábrica T). |
physicalQubitsPerRound |
cadeia (de caracteres) | O número de qubits físicos por ciclo de destilação, separados por vírgula numa sequência de caracteres (ou mensagem indicando que não há fábrica de T). |
tfactoryRuntimePerRound |
cadeia (de caracteres) | O tempo de execução de cada rodada de destilação, exibido como cadeias de caracteres amigáveis para o ser humano separadas por vírgulas (ou mensagem de que não há fábrica T). |
tstateLogicalErrorRate |
cadeia (de caracteres) | Taxa de erro do estado lógico T truncado (ou mensagem a indicar que não existe uma fábrica T). |
logicalCountsNumQubits |
cadeia (de caracteres) | Número de qubits (pré-layout) com sufixo métrico. |
logicalCountsTCount |
cadeia (de caracteres) | Número de portões T (pré-layout) com sufixo métrico. |
logicalCountsRotationCount |
cadeia (de caracteres) | Número de portas de rotação (pré-layout) com sufixo métrico. |
logicalCountsRotationDepth |
cadeia (de caracteres) | Profundidade de rotação (antes do layout) com sufixo métrico. |
logicalCountsCczCount |
cadeia (de caracteres) | Número de portas CCZ (antes do layout) com sufixo métrico. |
logicalCountsCcixCount |
cadeia (de caracteres) | Número de portas CCiX (pré-layout) com sufixo métrico. |
logicalCountsMeasurementCount |
cadeia (de caracteres) | Número de medições de qubit único (pré-layout) com sufixo métrico. |
errorBudget |
cadeia (de caracteres) | Orçamento de erro total truncado. |
errorBudgetLogical |
cadeia (de caracteres) | Orçamento de erro reduzido para erro lógico. |
errorBudgetTstates |
cadeia (de caracteres) | Orçamento de erro truncado para destilação defeituosa de estado T. |
errorBudgetRotations |
cadeia (de caracteres) | Orçamento de erro truncado para síntese de rotação defeituosa. |
numTsPerRotation |
cadeia (de caracteres) | 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 de código computada 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 | Pré-layout número de qubits. |
tCount |
Número | Número de pré-layout dos portões T. |
rotationCount |
Número | Número pré-layout de portões de rotação. |
rotationDepth |
Número | Profundidade de rotação pré-layout. |
cczCount |
Número | Número de portões CCZ antes do layout. |
ccixCount |
Número | Número de portas CCiX antes do layout. |
measurementCount |
Número | Número de medições de qubit único antes do layout. |
Gorjeta
Se pretender utilizar um conjunto pré-calculado de contagens lógicas para um trabalho de estimativa de recursos, pode usar a operação Python LogicalCounts para passar as estimativas conhecidas para o Resource Estimator. Para mais informações, veja Como usar estimativas conhecidas com o Estimador de Recursos.
Diagrama de espaços
A estimativa geral de recursos físicos consiste no número total de qubits físicos usados para o algoritmo e 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 das fábricas T contribui para o número de qubits físicos das fábricas T.
No Jupyter Notebook, pode aceder ao diagrama de espaço usando o widget SpaceChart do pacote widgets.
from qdk.widgets import SpaceChart
SpaceChart(result)
Diagrama de setores mostrando a distribuição do total de qubits físicos entre qubits de algoritmo e qubits de T factory. Há uma tabela com a distribuição do número de cópias de T factory e o número de qubits físicos por T factory.
Ao executar várias configurações de parâmetros com a estimativa de fronteira de Pareto, pode-se plotar o diagrama de espaço para uma solução específica. 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 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 aspetos mais importantes da estimativa de recursos.
Ao estimar os recursos de um algoritmo, você pode usar o diagrama espaço-tempo para visualizar as compensações entre o número de qubits físicos e o tempo de execução do algoritmo.
Nota
Para ver várias combinações ideais no diagrama espaço-temporal, você precisa definir o tipo de estimativa como estimativa de fronteira de Pareto. Se você executar o Estimador de Recursos no Visual Studio Code com o comando QDK: Calcular Estimativas de Recursos , a estimativa de fronteira de Pareto será habilitada por padrão.
O diagrama espaço-tempo permite que você encontre a combinação ideal de pares {número de qubits, tempo de execução} que satisfazem 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 espaço-tempo no Jupyter Notebook, utilize o widget EstimatesOverview do pacote widgets.
from qdk.widgets import EstimatesOverview
EstimatesOverview(result, colors=["#1f77b4", "#ff7f0e"], runNames=["e4 Surface Code", "e6 Floquet Code"])
Captura de ecrã mostrando o diagrama de tempo dos qubits do Estimador de Recursos.
Gorjeta
Para ver os detalhes da estimativa, você pode passar o mouse sobre cada ponto do diagrama.
O diagrama espaço-tempo é especialmente útil ao comparar várias configurações de vários parâmetros para o mesmo algoritmo.
Captura de ecrã mostrando o diagrama espaço-tempo e a tabela de resultados ao executar várias configurações de parâmetros no Estimador de Recursos.
Nota
Se você tiver problemas ao trabalhar com o Estimador de Recursos, consulte a página Solução de problemas ou entre em contato com AzureQuantumInfo@microsoft.com.
Próximos passos
- Execute a sua primeira estimativa de recursos
- Personalizar estimativas de recursos para as características da máquina
<a href="how-to-submit-re-jobs" data-linktype="relative-path"> Diferentes maneiras de executar o Estimador de Recursos</a> - Gerenciar programas grandes com o Estimador de Recursos
- Tutorial: Estimar os recursos de um problema de química quântica