Exercício – Introdução ao Avaliador de Recursos do Azure Quantum
Vamos praticar com o Avaliador de Recursos do Azure Quantum. No exemplo a seguir, você avalia os recursos físicos de uma amostra de algoritmo Shor.
Instale qsharp e qsharp-widgets
Primeiro, instale os pacotes qsharp
e qsharp-widgets
mais recentes do Azure Quantum.
python -m pip install --upgrade qsharp qsharp-widgets
Criar o algoritmo quântico
No Visual Studio Code, selecione Exibir > Paleta de comandos e selecione Criar: Novo Jupyter Notebook.
Na primeira célula do notebook, importe o pacote
qsharp
:import qsharp from qsharp_widgets import EstimateDetails
Adicione uma nova célula e copie o código a seguir:
%%qsharp /// # Sample /// Random Bit /// /// # Description /// This Q# program generates a random bit by setting a qubit in a superposition /// of the computational basis states |0〉 and |1〉, and returning the measurement /// result. operation RandomBit() : Result { // Qubits are only accesible for the duration of the scope where they // are allocated and are automatically released at the end of the scope. use qubit = Qubit(); // Set the qubit in superposition by applying a Hadamard transformation. H(qubit); // Measure the qubit. There is a 50% probability of measuring either // `Zero` or `One`. let result = M(qubit); // Reset the qubit so it can be safely released. Reset(qubit); return result; }
Estimar o algoritmo quântico
Agora, avalie os recursos físicos da operação
RandomBit
usando as suposições padrão. Adicione uma nova célula e copie o código a seguir:result = qsharp.estimate("RandomBit()") result
A função
qsharp.estimate
cria um objeto de resultado, que pode ser usado para exibir uma tabela com as contagens gerais de recursos físicos. A primeira tabela mostra as principais estimativas do recurso físico. A operaçãoRandomBit
requer 300 qubits e leva dois microssegundos para ser executada em um computador quântico.Estimativas de recursos físicos Valor Runtime 2 microssegundos rQOPS 3.00M Qubits físicos 300 Você pode inspecionar os detalhes de custos recolhendo os grupos que têm mais informações. Por exemplo, reduza o grupo Parâmetros de qubit lógico para ver que a distância do código é 5 e o número de qubits físicos por qubit lógico é 50.
Parâmetro de qubit lógico Valor Esquema de QEC surface_code Distância de código 5 Qubits físicos 50 Tempo de ciclo lógico 2 microssegundos Taxa de erro de qubit lógico 3.00E-5 Cruzamento de pré-fatores 0.03 Limite de correção de erro 0,01 Fórmula do tempo de ciclo lógico (4 x twoQubitGateTime
+ 2 xoneQubitMeasurementTime
) xcodeDistance
Fórmula de qubits físicos 2 x codeDistance
*codeDistance
Você pode usar o campo
jobParams
para acessar todos os parâmetros de destino que podem ser passados para a execução do trabalho e ver quais valores padrão foram assumidos:result['jobParams']
{'errorBudget': 0.001, 'qecScheme': {'crossingPrefactor': 0.03, 'errorCorrectionThreshold': 0.01, 'logicalCycleTime': '(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance', 'name': 'surface_code', 'physicalQubitsPerLogicalQubit': '2 * codeDistance * codeDistance'}, 'qubitParams': {'instructionSet': 'GateBased', 'name': 'qubit_gate_ns_e3', 'oneQubitGateErrorRate': 0.001, 'oneQubitGateTime': '50 ns', 'oneQubitMeasurementErrorRate': 0.001, 'oneQubitMeasurementTime': '100 ns', 'tGateErrorRate': 0.001, 'tGateTime': '50 ns', 'twoQubitGateErrorRate': 0.001, 'twoQubitGateTime': '50 ns'}}
Você pode ver que o Avaliador de Recursos assume o modelo de qubit
qubit_gate_ns_e3
, o código de correção de errosurface_code
e o orçamento de erro de 0,001 como valores padrão para a estimativa.
Alterar os valores padrão e estimar o algoritmo
Ao enviar uma solicitação de estimativa de recursos para o seu programa, você pode especificar alguns parâmetros opcionais. Estes são os parâmetros de destino que você pode personalizar:
errorBudget
: O orçamento geral de erros permitidos para o algoritmoqecScheme
: O esquema de correção de erro quântico (QEC)qubitParams
: Os parâmetros físicos do qubitconstraints
: As restrições no nível do componentedistillationUnitSpecifications
: As especificações dos algoritmos de destilação de fábricas TestimateType
: Único ou de fronteira
Alterar o modelo de qubit
Você pode estimar o custo do mesmo algoritmo usando o parâmetro de qubit baseado em Majorana, qubitParams
, qubit_maj_ns_e6
.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
}})
EstimateDetails(result_maj)
Alterar o esquema de correção de erros quânticos
Você pode executar novamente o trabalho de estimativa de recursos para o mesmo exemplo nos parâmetros de qubit com base em Majorana com um esquema QEC flutuante, qecScheme
.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
}})
EstimateDetails(result_maj)
Alterar o orçamento de erros
Em seguida, execute novamente o mesmo circuito quântico com um errorBudget
de 10%.
result_maj = qsharp.estimate("RandomBit()", params={
"qubitParams": {
"name": "qubit_maj_ns_e6"
},
"qecScheme": {
"name": "floquet_code"
},
"errorBudget": 0.1})
EstimateDetails(result_maj)