Informatique hybride intégrée

L’informatique hybride intégrée réunit les processus classiques et quantiques, ce qui permet au code classique de contrôler l’exécution d’opérations quantiques basées sur des mesures de circuit intermédiaire pendant que les qubits physiques restent actifs. À l’aide de techniques de programmation courantes, telles que les conditions imbriquées, les boucles et les appels de fonction, un seul programme quantique peut exécuter des problèmes complexes, ce qui réduit le nombre de captures nécessaires. À l’aide des techniques de réutilisation des qubits, les programmes plus volumineux peuvent s’exécuter sur des machines utilisant un plus petit nombre de qubits.

Important

L’informatique quantique hybride intégrée n’est actuellement pas prise en charge par l’extension QDK moderne Quantum Development Kit pour Visual Studio Code, ainsi que d’autres composants dans les exemples de cette page, tels que le noyau IQ# , la %azure commande magic ou le qsharp.azure module. Pour exécuter des travaux hybrides intégrés, utilisez microsoft Quantum Development Kit (QDK classique). Pour plus d’informations, consultez Continuer à travailler dans le QDK classique.

Pour plus d’informations, consultez :

Informatique quantique hybride intégrée

Prise en charge de targets

Actuellement, le modèle informatique hybride intégré dans Azure Quantum est pris en charge sur Quantinuumtargets.

Quantinuum

Fonctionnalité prise en charge Notes
Boucles classiques Boucles limitées uniquement
Flux de contrôle arbitraire Utilisation de la branche if/else
Mesure du circuit intermédiaire Utilise les ressources de registre classiques
Réutilisation des qubits N/A
Calcul classique en temps réel Arithmétique d’entier non signé 32 bits
Utilise les ressources de registre classiques

Prise en main

Pour commencer à explorer la programmation hybride intégrée, nous vous suggérons de parcourir les exemples de cet article ou d’explorer l’onglet Informatique quantique hybride dans la galerie Exemples du portail Azure Quantum.

Envoi de travaux hybrides intégrés

Lors de l’envoi d’un travail hybride intégré, vous devez ajouter un target paramètre de fonctionnalité après avoir spécifié le target. En outre, les programmes hybrides intégrés sur Azure Quantum sont exécutés et gérés comme des travaux quantiques réguliers. Chaque travail a un ID de travail unique et le résultat est un seul histogramme.

Important

L’informatique quantique hybride intégrée n’est actuellement pas prise en charge par l’extension QDK moderne Quantum Development Kit pour Visual Studio Code, ainsi que d’autres composants dans les exemples de cette page, tels que le noyau IQ# , la %azure commande magic ou le qsharp.azure module. Pour exécuter des travaux hybrides intégrés, utilisez microsoft Quantum Development Kit (QDK classique). Pour plus d’informations, consultez Continuer à travailler dans le QDK classique.

JeQ#

Lorsque vous utilisez le noyau IQ# dans un Jupyter Notebook, utilisez %azure.target-capability magic command with the AdaptiveExecution parameter.

%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution

Python + Q#

Lorsque vous utilisez le package Python qsharp , utilisez la qsharp.azure.target_capability fonction avec le AdaptiveExecution paramètre .

qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")

Azure CLI

Lorsque vous utilisez Azure CLI pour envoyer un travail, ajoutez le --target-capability paramètre avec la valeur AdaptiveExecution.

az quantum job submit \
    --target-capability AdaptiveExecution \
    --target-id quantinuum.sim.h1-1e \
    --job-name IterativePhaseEstimation \
    --shots 100 \
    --output table

Envoi de travaux hybrides intégrés dans une session

Vous pouvez combiner plusieurs travaux hybrides intégrés au sein d’une session à l’aide de Q# et de Python. Lors de l’envoi d’une session, ajoutez le targetCapability paramètre d’entrée avec la valeur 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

Pour plus d’informations, consultez Prise en main des sessions.

Notes

Bien que les sessions soient disponibles pour tous les fournisseurs de matériel d’informatique quantique, notez que les travaux d’informatique quantique hybride intégrés sont actuellement pris en charge sur Quantinuum targets.

Estimation du coût d’un travail hybride intégré

Vous pouvez estimer le coût d’exécution d’un travail hybride intégré sur du matériel Quantinuum en l’exécutant d’abord sur un émulateur.

Après une exécution réussie sur l’émulateur :

  1. Dans votre espace de travail Azure Quantum, sélectionnez Gestion des travaux.
  2. Sélectionnez le travail que vous avez envoyé.
  3. Dans la fenêtre contextuelle Détails du travail , sélectionnez Estimation des coûts pour afficher le nombre d’eHQC (crédits de l’émulateur Quantinuum) qui ont été utilisés. Ce nombre se traduit directement par le nombre de HQC (crédits quantiques Quantinuum) nécessaires pour exécuter le travail sur le matériel Quantinuum.

Estimation des coûts

Notes

Quantinuum déroule l’intégralité du circuit et calcule le coût sur tous les chemins de code, qu’ils soient exécutés de manière conditionnelle ou non.

Exemples hybrides intégrés

Les exemples suivants illustrent l’ensemble de fonctionnalités actuelles pour l’informatique hybride intégrée.

  • Vérifier un état GHZ enchevêtré
  • Répétition à trois qubits
  • Estimation de la phase itérative

Prérequis

  • Si vous débutez avec Azure Quantum, vous aurez besoin d’un abonnement Azure et d’un espace de travail Azure Quantum pour exécuter les exemples sur du matériel quantique. Pour plus d’informations, consultez Créer un espace de travail Azure Quantum.
  • VS Code et la Quantum Development Kit configuration dans votre environnement local. Pour plus d’informations, consultez Configurer le Quantum Development Kit.
  • Vérifiez que VS Code dispose de la dernière version de ( Quantum Development Kit 0.27.258160).
    • Dans VS Code, sélectionnez Ctrl + Maj + X et recherchez « Microsoft Quantum Development Kit».

Les exemples de cet article sont configurés pour s’exécuter sur Visual Studio (VS) Code et utiliser l’interface de ligne de commande (CLI) Azure intégrée pour envoyer le travail à Azure Quantum. Pour exécuter la version Jupyter Notebook de ces exemples et d’autres, connectez-vous à votre espace de travail Portail Azure et affichez les exemples à partir de l’onglet Informatique quantique hybride dans la galerie Exemples. Vous pouvez exécuter le notebook dans le cloud ou le télécharger et l’exécuter localement.

Pour résoudre les problèmes liés aux programmes hybrides intégrés, consultez Résolution des problèmes d’hybride intégré.

Dans cet exemple, vous allez découvrir comment fusionner des instructions classiques et quantiques dans le même programme, toutes entièrement traitées par le back-end d’informatique quantique.

Fonctionnalités à noter à propos de cet exemple :

  • Les mesures de boucle et de qubit se produisent alors que les qubits restent cohérents.
  • La routine combine des opérations de calcul classiques et quantiques.
  • Vous n’avez pas besoin d’apprendre à programmer du matériel hautes performances spécialisé s’exécutant à côté du QPU (par exemple, fpga).
  • L’exécution d’un programme équivalent sans les fonctionnalités hybrides intégrées nécessite de retourner chaque résultat de mesure intermédiaire, puis d’exécuter le post-traitement sur les données.

Créer un projet VS Code

  1. Dans VS Code, créez un projet d’application Q# console autonome nommé CheckGHZ.

    1. Sélectionner Afficher > la palette >Q#de commandes : Créer une application console autonome de projet >
  2. Remplacez la configuration dans CheckGHZ.csproj par ce qui suit :

    <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. Remplacez le code dans Program.qs par ce qui suit :

    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. À partir d’une fenêtre de terminal dans VS Code, connectez-vous à votre espace de travail Azure Quantum et définissez les ressources par défaut.

    az login
    

    Notes

    Votre ID d’abonnement Azure, votre groupe de ressources et votre nom d’espace de travail peuvent être répertoriés dans la fenêtre du terminal après vous être connecté en exécutant az quantum workspace list. Vous pouvez également les trouver dans le Portail Azure sur la page Vue d’ensemble de votre espace de travail Azure Quantum.

    az account set --subscription <MySubscriptionID>
    
    az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
    
  5. Envoyez le travail et affichez les résultats. Cette exécution utilise environ 10,65 eHQC (unités de facturation de l’émulateur 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]
    

Sortie GHZ

Étapes suivantes

Informatique hybride distribuée