Integriertes Hybridcomputing

Das integrierte Hybridcomputing vereint die klassischen und quantenbasierten Prozesse, sodass klassischer Code die Ausführung von Quantenvorgängen basierend auf Mittelkreismessungen steuern kann, während die physischen Qubits am Leben bleiben. Mithilfe gängiger Programmiertechniken wie geschachtelte Bedingungen, Schleifen und Funktionsaufrufe kann ein einzelnes Quantenprogramm komplexe Probleme ausführen, wodurch die Anzahl der erforderlichen Aufnahmen verringert wird. Mithilfe von Qubit-Wiederverwendungstechniken können größere Programme auf Computern ausgeführt werden, die eine kleinere Anzahl von Qubits verwenden.

Wichtig

Integriertes hybrides Quantencomputing wird derzeit nicht von der Erweiterung Modern Quantum Development Kit (Modern QDK) für Visual Studio Code unterstützt, zusammen mit anderen Komponenten in den Beispielen auf dieser Seite, z. B. dem I-KernelQ# , dem %azure magic-Befehl oder dem qsharp.azure Modul. Um integrierte Hybridaufträge auszuführen, verwenden Sie microsoft Quantum Development Kit (klassisches QDK). Weitere Informationen finden Sie unter Weiterarbeiten im klassischen QDK.

Weitere Informationen finden Sie unter:

Integriertes hybrides Quantencomputing

Unterstützung von targets

Derzeit wird das integrierte Hybrid Computing-Modell in Azure Quantum in Quantinuumtargets unterstützt.

Quantinuum

Unterstützte Funktion Hinweise
Klassische Schleifen Nur begrenzte Schleifen
Beliebiger Steuerungsfluss Verwendung von if/else-Verzweigung
Mittelkreismessung Verwendet klassische Registerressourcen
Qubit-Wiederverwendung
Klassisches Compute in Echtzeit 32-Bit-Arithmetik ohne Vorzeichen
Verwendet klassische Registerressourcen

Erste Schritte

Um mit der integrierten Hybridprogrammierung zu beginnen, empfehlen wir Ihnen, die Beispiele in diesem Artikel durchzugehen oder die Registerkarte Hybrid Quantum Computing im Katalog Beispiele des Azure Quantum-Portals zu erkunden.

Übermitteln integrierter Hybridaufträge

Wenn Sie einen integrierten Hybridauftrag übermitteln, müssen Sie einen target Funktionsparameter hinzufügen, nachdem Sie angegeben haben target. Darüber hinaus werden integrierte Hybridprogramme in Azure Quantum genauso wie normale Quantenaufträge ausgeführt und verwaltet. Jeder Auftrag verfügt über eine einzelne Auftrags-ID, und das Ergebnis ist ein einzelnes Histogramm.

Wichtig

Integriertes hybrides Quantencomputing wird derzeit nicht von der Erweiterung Modern Quantum Development Kit (Modern QDK) für Visual Studio Code unterstützt, zusammen mit anderen Komponenten in den Beispielen auf dieser Seite, z. B. dem I-KernelQ# , dem %azure magic-Befehl oder dem qsharp.azure Modul. Um integrierte Hybridaufträge auszuführen, verwenden Sie microsoft Quantum Development Kit (klassisches QDK). Weitere Informationen finden Sie unter Weiterarbeiten im klassischen QDK.

IchQ#

Wenn Sie den I-KernelQ# in einem Jupyter Notebook verwenden, verwenden Sie %azure.targetMagic-Befehl -capability mit dem AdaptiveExecution Parameter.

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

Python + Q#

Verwenden Sie bei Verwendung des Python-Pakets qsharp die qsharp.azure.target_capability Funktion mit dem AdaptiveExecution -Parameter.

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

Azure CLI

Wenn Sie die Azure CLI zum Übermitteln eines Auftrags verwenden, fügen Sie den --target-capability Parameter mit dem Wert AdaptiveExecutionhinzu.

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

Übermitteln integrierter Hybridaufträge innerhalb einer Sitzung

Sie können mehrere integrierte Hybridaufträge in einer Sitzung mit Q# und Python kombinieren. Fügen Sie beim Übermitteln einer Sitzung den targetCapability Eingabeparameter mit dem Wert AdaptiveExecutionhinzu.

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

Weitere Informationen finden Sie unter Erste Schritte mit Sitzungen.

Hinweis

Obwohl Sitzungen für alle Anbieter von Quantencomputing-Hardware verfügbar sind, beachten Sie, dass integrierte hybride Quantencomputing-Aufträge derzeit in Quantinuum targetsunterstützt werden.

Schätzen der Kosten eines integrierten Hybridauftrags

Sie können die Kosten für die Ausführung eines integrierten Hybridauftrags auf Quantinuum-Hardware schätzen, indem Sie ihn zuerst auf einem Emulator ausführen.

Nach erfolgreicher Ausführung auf dem Emulator:

  1. Wählen Sie in Ihrem Azure Quantum-Arbeitsbereich Die Option Auftragsverwaltung aus.
  2. Wählen Sie den von Ihnen übermittelten Auftrag aus.
  3. Wählen Sie im Popup Auftragsdetailsdie Option Kostenschätzung aus, um anzuzeigen, wie viele eHQCs (Quantinuum-Emulatorguthaben) verwendet wurden. Diese Zahl entspricht direkt der Anzahl der HQCs (Quantinuum Quantum Credits), die zum Ausführen des Auftrags auf Quantinuum-Hardware benötigt werden.

Kostenschätzung

Hinweis

Quantinuum entrollt die gesamte Leitung und berechnet die Kosten für alle Codepfade, unabhängig davon, ob sie bedingt ausgeführt werden oder nicht.

Integrierte Hybridbeispiele

Die folgenden Beispiele veranschaulichen den aktuellen Featuresatz für integriertes Hybrid Computing.

  • Überprüfen eines verschränkten GHZ-Zustands
  • Drei-Qubit-Wiederholung
  • Iterative Phasenschätzung

Voraussetzungen

  • Wenn Sie noch nicht mit Azure Quantum vertraut sind, benötigen Sie ein Azure-Abonnement und einen Azure Quantum-Arbeitsbereich, um die Beispiele auf Quantenhardware auszuführen. Weitere Informationen finden Sie unter Erstellen eines Azure Quantum-Arbeitsbereichs.
  • VS Code und die Quantum Development Kit Einrichtung in Ihrer lokalen Umgebung. Weitere Informationen finden Sie unter Einrichten von Quantum Development Kit.
  • Stellen Sie sicher, dass VS Code über die Quantum Development Kit neueste Version (0.27.258160) verfügt.
    • Wählen Sie in VS Code STRG + UMSCHALT + X aus, und suchen Sie nach "Microsoft Quantum Development Kit".

Die Beispiele in diesem Artikel sind für die Ausführung in Visual Studio (VS) Code eingerichtet und verwenden die integrierte Azure-Befehlszeilenschnittstelle (CLI), um den Auftrag an Azure Quantum zu übermitteln. Um die Jupyter Notebook Version dieser und anderer Beispiele auszuführen, melden Sie sich bei Ihrem Azure-Portal Arbeitsbereich an, und zeigen Sie die Beispiele auf der Registerkarte Hybrid Quantum Computing im Katalog Beispiele an. Sie können das Notebook entweder in der Cloud ausführen oder herunterladen und lokal ausführen.

Informationen zur Problembehandlung bei integrierten Hybridprogrammen finden Sie unter Problembehandlung für integrierte Hybridprogramme.

In diesem Beispiel erfahren Sie, wie Sie klassische und Quantenanweisungen im selben Programm kombinieren, die alle vollständig vom Quantencomputing-Back-End verarbeitet werden.

Zu beachtende Features für dieses Beispiel:

  • Die Schleifen- und Qubitmessungen erfolgen, während die Qubits kohärent bleiben.
  • Die Routine kombiniert klassische und Quantencomputingvorgänge.
  • Sie müssen nicht lernen, für spezialisierte Hochleistungshardware zu programmieren, die neben der QPU (z. B. FPGAs) ausgeführt wird.
  • Das Ausführen eines entsprechenden Programms ohne die integrierten Hybridfeatures erfordert, dass jedes zwischengeschaltete Messergebnis zurückgegeben und dann die Nachverarbeitung der Daten ausgeführt werden muss.

Erstellen eines VS Code-Projekts

  1. Erstellen Sie in VS Code ein neues Q# eigenständiges Konsolenanwendungsprojekt namens CheckGHZ.

    1. Wählen Sie Befehlspalette >Q#anzeigen>: Erstellen einer neuen eigenständigen Projektkonsolenanwendung >
  2. Ersetzen Sie die Konfiguration in CheckGHZ.csproj durch Folgendes:

    <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. Ersetzen Sie den Code in Program.qs durch Folgendes:

    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. Stellen Sie über ein Terminalfenster in VS Code eine Verbindung mit Ihrem Azure Quantum-Arbeitsbereich her, und legen Sie die Standardressourcen fest.

    az login
    

    Hinweis

    Ihre Azure-Abonnement-ID, Ihre Ressourcengruppe und Ihr Arbeitsbereichsname können im Terminalfenster aufgeführt werden, nachdem Sie sich angemeldet haben, indem Sie az quantum workspace list ausführen. Alternativ finden Sie sie im Azure-Portal auf der Seite Übersicht Ihres Azure Quantum-Arbeitsbereichs.

    az account set --subscription <MySubscriptionID>
    
    az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
    
  5. Übermitteln Sie den Auftrag, und zeigen Sie die Ergebnisse an. Bei dieser Ausführung werden ca. 10,65 eHQCs (Quantinuum-Emulator-Abrechnungseinheiten) verwendet.

    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]
    

GHZ-Ausgang

Nächste Schritte

Verteiltes Hybrid Computing