Informática híbrida integrada
La computación híbrida integrada reúne los procesos clásicos y cuánticos, lo que permite al código clásico controlar la ejecución de operaciones cuánticas basadas en medidas de circuito medio mientras los cúbits físicos permanecen activos. Con técnicas de programación comunes, como condicionales anidados, bucles y llamadas de función, un único programa cuántico puede ejecutar problemas complejos, lo que reduce el número de tomas necesarias. Mediante técnicas de reutilización de cúbits, los programas más grandes se pueden ejecutar en máquinas que usan un número menor de cúbits.
Importante
Actualmente, la extensión Modern Quantum Development Kit (Modern QDK) no admite la computación cuántica híbrida integrada para Visual Studio Code, junto con otros componentes de los ejemplos de esta página, como el kernel IQ#, el %azure
comando magic o el qsharp.azure
módulo. Para ejecutar trabajos híbridos integrados, use Microsoft Quantum Development Kit (QDK clásico). Para obtener más información, consulte Continuar trabajando en el QDK clásico.
Para obtener más información, consulte:
- Granade & Weibe, "Usar paseos aleatorios para la estimación de fase iterativa".
- Lubinski, et al., "Avance del cálculo cuántico híbrido clásico con Real-Time ejecución"
Se ha agregado compatibilidad con targets.
Actualmente, el modelo de computación híbrida integrado en Azure Quantum se admite en Quantinuumtargets.
Quantinuum
Característica admitida | Notas |
---|---|
Bucles clásicos | Bucles limitados solo |
Flujo de control arbitrario | Uso de bifurcación if/else |
Medición del circuito medio | Utiliza recursos de registro clásicos |
Reutilización de cúbits | N/D |
Proceso clásico en tiempo real | Aritmética de enteros de 32 bits sin signo Utiliza recursos de registro clásicos |
Introducción
Para empezar a explorar la programación híbrida integrada, se recomienda recorrer los ejemplos de este artículo o explorar la pestaña Computación cuántica híbrida en la galería de ejemplos del portal de Azure Quantum.
Envío de trabajos híbridos integrados
Al enviar un trabajo híbrido integrado, debe agregar un target parámetro de funcionalidad después de especificar .target Aparte de eso, los programas híbridos integrados en Azure Quantum se ejecutan y administran igual que los trabajos cuánticos normales. Cada trabajo tiene un identificador de trabajo único y el resultado es un único histograma.
Importante
Actualmente, la extensión Modern Quantum Development Kit (Modern QDK) no admite la computación cuántica híbrida integrada para Visual Studio Code, junto con otros componentes de los ejemplos de esta página, como el kernel IQ#, el %azure
comando magic o el qsharp.azure
módulo. Para ejecutar trabajos híbridos integrados, use Microsoft Quantum Development Kit (QDK clásico). Para obtener más información, consulte Continuar trabajando en el QDK clásico.
IQ#
Al usar el kernel IQ# en un Jupyter Notebook, use %azure.targetComando mágico -capability con el AdaptiveExecution
parámetro .
%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution
Python + Q#
Al usar el paquete de Python qsharp , use la qsharp.azure.target_capability
función con el AdaptiveExecution
parámetro .
qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")
Azure CLI
Al usar la CLI de Azure para enviar un trabajo, agregue el --target-capability
parámetro con el valor AdaptiveExecution
.
az quantum job submit \
--target-capability AdaptiveExecution \
--target-id quantinuum.sim.h1-1e \
--job-name IterativePhaseEstimation \
--shots 100 \
--output table
Envío de trabajos híbridos integrados dentro de una sesión
Puede combinar varios trabajos híbridos integrados dentro de una sesión mediante Q# y Python. Al enviar una sesión, agregue el targetCapability
parámetro de entrada con el valor AdaptiveExecution
.
with target.open_session(name="Q# session") as session:
target.submit(input_data=QuantumOperation, name="Job 1", input_params={"count":100, "targetCapability":"AdaptiveExecution"}) # First job submission
target.submit(input_data=QuantumOperation, name="Job 2", input_params={"count":200, "targetCapability":"AdaptiveExecution"}) # Second job submission
target.submit(input_data=QuantumOperation, name="Job 3", input_params={"count":300, "targetCapability":"AdaptiveExecution"}) # Third job submission
Para obtener más información, consulte Introducción a las sesiones.
Nota
Aunque las sesiones están disponibles para todos los proveedores de hardware de computación cuántica cuántica, tenga en cuenta que actualmente se admiten trabajos de computación cuántica híbrida integrados en Quantinuum targets.
Estimación del costo de un trabajo híbrido integrado
Puede calcular el costo de ejecutar un trabajo híbrido integrado en hardware quantinuum ejecutándolo primero en un emulador.
Después de una ejecución correcta en el emulador:
- En el área de trabajo de Azure Quantum, seleccione Administración de trabajos.
- Seleccione el trabajo que envió.
- En el menú emergente Detalles del trabajo , seleccione Estimación de costos para ver cuántos créditos del emulador de Quantinuum se usaron. Este número se traduce directamente en el número de HQCs (créditos cuánticos de Quantinuum) necesarios para ejecutar el trabajo en hardware quantinuum.
Nota
Quantinuum anula la inscripción del circuito completo y calcula el costo en todas las rutas de acceso de código, tanto si se ejecutan condicionalmente como si no.
Ejemplos híbridos integrados
En los ejemplos siguientes se muestra el conjunto de características actual para la informática híbrida integrada.
- Comprobar un estado de GHZ entrelazado
- Repetición de tres cúbits
- Estimación de fase iterativa
Requisitos previos
- Si no está familiarizado con Azure Quantum, necesitará una suscripción de Azure y un área de trabajo de Azure Quantum para ejecutar los ejemplos en hardware cuántico. Para más información, consulte Creación de un área de trabajo de Azure Quantum.
- VS Code y la Quantum Development Kit configuración en el entorno local. Para obtener más información, vea Configuración de Quantum Development Kit.
- Asegúrese de que VS Code tiene la Quantum Development Kit versión más reciente de (0.27.258160).
- En VS Code, seleccione Ctrl + Mayús + X y busque "Microsoft Quantum Development Kit".
Los ejemplos de este artículo están configurados para ejecutarse en Visual Studio (VS) Code y usar la interfaz de línea de comandos (CLI) de Azure integrada para enviar el trabajo a Azure Quantum. Para ejecutar la versión Jupyter Notebook de estos y otros ejemplos, inicie sesión en el área de trabajo de Azure Portal y vea los ejemplos en la pestaña Computación cuántica híbrida de la galería de ejemplos. Puede ejecutar el cuaderno en la nube o descargarlo y ejecutarlo localmente.
Para solucionar problemas con los programas híbridos integrados, consulte Solución de problemas híbridos integrados.
En este ejemplo, descubrirá cómo combinar instrucciones clásicas y cuánticas en el mismo programa, todas totalmente procesadas por el back-end de computación cuántica.
Características que se van a tener en cuenta sobre este ejemplo:
- Las medidas de bucle y cúbit se producen mientras los cúbits permanecen coherentes.
- La rutina combina operaciones de proceso clásicas y cuánticas.
- No es necesario aprender a programar para hardware especializado de alto rendimiento que se ejecuta junto a la QPU (por ejemplo, FPGA).
- La ejecución de un programa equivalente sin las características híbridas integradas requeriría devolver todos los resultados intermedios de medición y, a continuación, ejecutar el posprocesamiento en los datos.
Creación de un proyecto de VS Code
En VS Code, cree un nuevo Q# proyecto de aplicación de consola independiente denominado CheckGHZ.
- Seleccione View Command Pallete >Q#: Create new project Standalone console application (Ver > paleta de comandos): crear una aplicación de consola independiente del proyecto>.
Reemplace la configuración de CheckGHZ.csproj por lo siguiente:
<Project Sdk="Microsoft.Quantum.Sdk/0.27.258160"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>quantinuum</ExecutionTarget> <TargetCapability>AdaptiveExecution</TargetCapability> </PropertyGroup> </Project>
Reemplace el código de Program.qs por lo siguiente:
namespace Microsoft.Quantum.Samples { open Microsoft.Quantum.Measurement; open Microsoft.Quantum.Intrinsic; /// # Summary /// Counts the number of times measurements of a prepared GHZ state did not match the expected correlations. @EntryPoint() // The EntryPoint attribute is used to mark that this operation is where a quantum program will start running. operation CheckGHZ() : Int { use q = Qubit[3]; mutable mismatch = 0; for _ in 1..10 { // Prepare the GHZ state. H(q[0]); CNOT(q[0], q[1]); CNOT(q[1], q[2]); // Measures and resets the 3 qubits let (r0, r1, r2) = (MResetZ(q[0]), MResetZ(q[1]), MResetZ(q[2])); // Adjusts classical value based on qubit measurement results if not (r0 == r1 and r1 == r2) { set mismatch += 1; } } return mismatch; } }
Desde una ventana de terminal en VS Code, conéctese al área de trabajo de Azure Quantum y establezca los recursos predeterminados.
az login
Nota
El identificador de suscripción de Azure, el grupo de recursos y el nombre del área de trabajo se pueden mostrar en la ventana de terminal después de iniciar sesión ejecutando az quantum workspace list. Como alternativa, puede encontrarlos en el Azure Portal de la página Información general del área de trabajo de Azure Quantum.
az account set --subscription <MySubscriptionID> az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
Envíe el trabajo y vea los resultados. Esta ejecución usa aproximadamente 10.65 eHQCs (unidades de facturación del emulador de Quantinuum)
az quantum job submit \ --target-id quantinuum.sim.h1-1e \ --job-name CheckGHZ \ --target-capability AdaptiveExecution \ --shots 50
az quantum job output \ -o table \ --job-id [job-id]
Pasos siguientes
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