Tipos de perfil de destino de Azure Quantum
En este artículo se describen los distintos tipos de target perfil disponibles en los proveedores de computación cuántica de Azure Quantum. En este momento, debido a la fase de desarrollo temprana del campo, estos dispositivos cuánticos tienen algunas limitaciones y requisitos para los programas que se ejecutan en ellos.
Unidades de procesamiento cuántico (QPU): diferentes perfiles y sus limitaciones
Una unidad de procesamiento cuántico (QPU) es un procesador físico o simulado que contiene una serie de cúbits interconectados que se pueden manipular para calcular algoritmos cuánticos. Es el componente central de un equipo cuántico o simulador cuántico.
Los dispositivos cuánticos siguen siendo una tecnología emergente y no todos pueden ejecutar todo el código de Q#. Por lo tanto, debe tener en cuenta algunas restricciones al desarrollar programas para diferentes targets. Actualmente, Azure Quantum y el kit de desarrollo de Quantum administran tres perfiles diferentes para las QPU:
- Full: este perfil puede ejecutar cualquier programa de Q# dentro de los límites de memoria para simuladores o el número de cúbits para equipos cuánticos físicos.
- No Control Flow: este perfil puede ejecutar cualquier programa de Q# que no requiera el uso de los resultados de las medidas de cúbits para controlar el flujo del programa. Dentro de un programa targetde Q# para este tipo de QPU, los valores de tipo
Result
no admiten la comparación de igualdad. - Basic Measurement Feedback: este perfil tiene una capacidad limitada de usar los resultados de las mediciones de cúbits para controlar el flujo del programa. Dentro de un programa targetde Q# para este tipo de QPU, puede comparar valores de tipo
Result
como parte de las condiciones dentro de las instrucciones enif
las operaciones, lo que permite la medición del circuito medio. Los bloques condicionales correspondientes no pueden contener instruccionesreturn
niset
.
Creación y ejecución de aplicaciones para Full el perfil targets
Full profile targets puede ejecutar cualquier programa de Q#, lo que significa que puede escribir programas sin restricciones de funcionalidad. Azure Quantum aún no proporciona ninguno target con este perfil.
Creación y ejecución de aplicaciones para No Control Flow el perfil targets
No Control Flow profile targets puede ejecutar una amplia variedad de aplicaciones de Q#, con la restricción de que no pueden usar resultados de medidas de cúbits para controlar el flujo del programa. Específicamente, los valores de tipo Result
no admiten la comparación de igualdad.
Por ejemplo, esta operación no se puede ejecutar en :No Control Flowtarget
operation SetQubitState(desired : Result, q : Qubit) : Result {
if (desired != M(q)) {
X(q);
}
}
Si intenta ejecutar esta operación en , No Control Flowtarget se producirá un error porque evalúa una comparación entre dos resultados (desired != M(q)
) para controlar el flujo de cálculo con una if
instrucción . Esto se aplicará a cualquier tipo de bifurcación condicional, como elif
las instrucciones y else
.
Nota
Actualmente, no puede enviar programas cuánticos que apliquen operaciones en cúbits medidos en No Control Flowtargets, aunque no use los resultados para controlar el flujo del programa. Es decir, No Control Flowtargets no permita mediciones de circuito medio.
Por ejemplo, el código siguiente no se puede ejecutar en :No Control Flowtarget
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SampleMeasuredQubit(q : Qubit) : Result {
H(MeasureQubit(q));
return M(MeasureQubit(q));
}
Actualmente, están No Control Flowtargets disponibles para Azure Quantum:
Proveedor: IonQ
- Simulador de IonQ (
ionq.simulator
) - QPU de IonQ (
ionq.qpu
)
- Simulador de IonQ (
Proveedor: Rigetti
- Simulador de Rigetti (
rigetti.sim.*
) - QPU de Rigetti (
rigetti.qpu.*
)
- Simulador de Rigetti (
Creación y ejecución de aplicaciones para Basic Measurement Feedback el perfil targets
Basic Measurement Feedback profile targets puede ejecutar una amplia variedad de aplicaciones de Q#, con la restricción que solo puede comparar valores de tipo Result
como parte de las condiciones dentro if
de las instrucciones en las operaciones. Este tipo de perfil supone una mejora de los No Control Flow perfiles, pero todavía está sujeto a algunas limitaciones.
Basic Measurement Feedback profile targets permite operaciones condicionales basadas en medidas y medidas de circuito medio, lo que significa que los cúbits se pueden medir selectivamente en un punto distinto de la instrucción final de un programa cuántico, y la salida de la medida se puede usar en otras operaciones. La medición del circuito medio permite varias medidas en cualquier punto del programa cuántico. La información cuántica de los cúbits medidos se contrae a un estado clásico (cero o uno), pero los cúbits no medidos conservan su estado cuántico.
En Q# al medir un cúbit, se devuelve un valor de tipo Result
. Si desea usar este resultado en una instrucción condicional, debe comparar directamente en la instrucción condicional. Los bloques condicionales correspondientes no pueden contener instrucciones return
ni set
.
Por ejemplo, se permitiría el siguiente código de Q# en :Basic Measurement Feedbacktarget
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); )
}
Sin embargo, no se permitiría el mismo código con la evaluación booleana movida:
operation BeOne(q : Qubit) : Bool {
return M(q) == One;
}
operation SetToZeroUsingBeOne(q : Qubit) : Unit {
if BeOne(q) { X(q); }
}
La SetQubitState
operación en se puede usar en No Control Flow un Basic Measurement Feedbacktarget siempre y cuando no incluya ninguna return
instrucción o set
dentro de la if
instrucción . Esto se aplicará a cualquier tipo de bifurcación condicional, como elif
las instrucciones y else
. Por ejemplo, la siguiente operación no se puede usar en :Basic Measurement Feedbacktarget
operation SetQubitState(desired : Result, q : Qubit) : Result {
if desired != M(q) {
X(q);
return M(q);
}
}
Actualmente, están Basic Measurement Feedbacktargets disponibles para Azure Quantum:
- Proveedor: Quantinuum
- Emuladores de Quantinuum (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPUs (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Emuladores de Quantinuum (
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de