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:

Computación cuántica híbrida integrada

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:

  1. En el área de trabajo de Azure Quantum, seleccione Administración de trabajos.
  2. Seleccione el trabajo que envió.
  3. 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.

Estimación de costos

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

  1. En VS Code, cree un nuevo Q# proyecto de aplicación de consola independiente denominado CheckGHZ.

    1. Seleccione View Command Pallete >Q#: Create new project Standalone console application (Ver > paleta de comandos): crear una aplicación de consola independiente del proyecto>.
  2. 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>
    
  3. 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;
        }
    }
    
  4. 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>
    
  5. 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]
    

Salida de GHZ

Pasos siguientes

Informática híbrida distribuida