Tipos de perfil de destino no Azure Quantum
Este artigo discute os diferentes tipos de target perfil disponíveis nos provedores de computação quântica no Azure Quantum. No momento, devido à fase inicial de desenvolvimento da área, os dispositivos quantum têm algumas limitações e requisitos para programas executados neles.
QPU (Unidades de Processamento Quântico): perfis diferentes e suas limitações
Uma QPU (Unidade de Processamento Quantum) é um processador físico ou simulado que contém um número de qubits interconectados que podem ser manipulados para computar algoritmos quantum. É o componente central de um computador quântico ou simulador quântico.
Os dispositivos quânticos ainda são uma tecnologia emergente e nem todos podem executar todo o código Q#. Dessa forma, você precisa ter algumas restrições em mente ao desenvolver programas para diferentes targets. Atualmente, o Azure Quantum e o QDK gerenciam três perfis diferentes para QPUs:
- Full: esse perfil pode executar qualquer programa Q# dentro dos limites de memória para simuladores ou o número de qubits para computadores quânticos físicos.
- No Control Flow: esse perfil pode executar qualquer programa Q# que não exija o uso dos resultados de medidas de qubit para controlar o fluxo do programa. Em um programa targetQ# para esse tipo de QPU, os valores do tipo
Result
não dão suporte à comparação de igualdade. - Basic Measurement Feedback: esse perfil tem capacidade limitada de usar os resultados de medidas qubit para controlar o fluxo do programa. Em um programa targetQ# para esse tipo de QPU, você pode comparar valores do tipo
Result
como parte das condições dentroif
de instruções em operações, permitindo a medição de circuito médio. Os blocos condicionais correspondentes não podem conter as instruçõesreturn
ouset
.
Criar e executar aplicativos para Full o perfil targets
Full O perfil targets pode executar qualquer programa Q#, o que significa que você pode escrever programas sem restrições de funcionalidade. O Azure Quantum ainda não fornece nenhum target com esse perfil.
Criar e executar aplicativos para No Control Flow o perfil targets
No Control Flow O perfil targets pode executar uma ampla variedade de aplicativos Q#, com a restrição de que eles não podem usar resultados de medidas de qubit para controlar o fluxo do programa. Mais especificamente, valores do tipo Result
não dão suporte à comparação de igualdade.
Por exemplo, essa operação não pode ser executada em um No Control Flowtarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if (desired != M(q)) {
X(q);
}
}
Tentar executar essa operação em um No Control Flowtarget falhará porque ele avalia uma comparação entre dois resultados (desired != M(q)
) para controlar o fluxo de computação com uma instrução if
. Isso será aplicável a qualquer tipo de ramificação condicional, como elif
instruções e else
.
Observação
Atualmente, você não pode enviar programas quânticos que aplicam operações em qubits que foram medidos em No Control Flowtargets, mesmo que você não use os resultados para controlar o fluxo do programa. Ou seja, No Control Flowtargets não permita medições no meio do circuito.
Por exemplo, o código a seguir não pode ser executado em um No Control Flowtarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SampleMeasuredQubit(q : Qubit) : Result {
H(MeasureQubit(q));
return M(MeasureQubit(q));
}
Atualmente, eles No Control Flowtargets estão disponíveis para o Azure Quantum:
Provedor: IonQ
- Simulador de IonQ (
ionq.simulator
) - IonQ QPU (
ionq.qpu
)
- Simulador de IonQ (
Provedor: Rigetti
- Simulador Rigetti (
rigetti.sim.*
) - QPU de Rigetti (
rigetti.qpu.*
)
- Simulador Rigetti (
Criar e executar aplicativos para Basic Measurement Feedback o perfil targets
Basic Measurement Feedback O perfil targets pode executar uma ampla variedade de aplicativos Q#, com a restrição de que você só pode comparar valores do tipo Result
como parte das condições dentro if
de instruções em operações. Esse tipo de perfil supõe uma melhoria em relação No Control Flow aos perfis, mas ainda está sujeito a algumas limitações.
Basic Measurement Feedback O perfil targets permite operações condicionais baseadas em medidas e medidas de circuito médio, o que significa que os qubits podem ser medidos seletivamente em um ponto diferente da instrução final de um programa quântico e a saída da medida pode ser usada em outras operações. A medição de circuito médio permite várias medidas a qualquer momento em todo o programa quântico. As informações quânticas dos qubits medidos entram em colapso em um estado clássico (zero ou um), mas os qubits não medidos mantêm seu estado quântico.
Em Q# ao medir um qubit, um valor do tipo Result
é retornado. Se você quiser usar esse resultado em uma instrução condicional, precisará comparar diretamente na instrução condicional. Os blocos condicionais correspondentes não podem conter instruções return
ou set
.
Por exemplo, o seguinte código Q# seria permitido em um Basic Measurement Feedbacktarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); )
}
No entanto, o mesmo código com a avaliação booliana movida não seria permitido:
operation BeOne(q : Qubit) : Bool {
return M(q) == One;
}
operation SetToZeroUsingBeOne(q : Qubit) : Unit {
if BeOne(q) { X(q); }
}
A SetQubitState
operação em No Control Flow pode ser usada em um Basic Measurement Feedbacktarget desde que você não inclua nenhuma return
instrução ou set
dentro da if
instrução . Isso será aplicável a qualquer tipo de ramificação condicional, como elif
instruções e else
. Por exemplo, a operação a seguir não pode ser usada em um Basic Measurement Feedbacktarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if desired != M(q) {
X(q);
return M(q);
}
}
Atualmente, eles Basic Measurement Feedbacktargets estão disponíveis para o Azure Quantum:
- Provedor: Quantinuum
- Emuladores Quantinuum (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - QPUs Quantinuum (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Emuladores Quantinuum (
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de