Geïntegreerde hybride computing
Geïntegreerde hybride computing brengt de klassieke en kwantumprocessen samen, waardoor klassieke code de uitvoering van kwantumbewerkingen kan beheren op basis van metingen in het middencircuit, terwijl de fysieke qubits in leven blijven. Met behulp van veelgebruikte programmeertechnieken, zoals geneste voorwaardelijkheden, lussen en functie-aanroepen, kan één kwantumprogramma complexe problemen uitvoeren, waardoor het aantal opnamen dat nodig is, wordt verminderd. Met behulp van technieken voor hergebruik van qubits kunnen grotere programma's worden uitgevoerd op computers die gebruikmaken van een kleiner aantal qubits.
Belangrijk
Geïntegreerde hybride kwantumcomputing wordt momenteel niet ondersteund door de extensie Modern Quantum Development Kit (Modern QDK) voor Visual Studio Code, samen met andere onderdelen in de voorbeelden op deze pagina, zoals de I-kernelQ# , de %azure
magic-opdracht of de qsharp.azure
module. Als u geïntegreerde hybride taken wilt uitvoeren, gebruikt u microsoft Quantum Development Kit (klassieke QDK). Zie Doorgaan met werken in de klassieke QDK voor meer informatie.
Zie voor meer informatie:
- Granade & Weibe, "Using Random Walks for Iterative Phase Estimation".
- Lubinski, et al., "Advancing Hybrid Quantum–Classical Computation with Real-Time Execution"
Ondersteund targets
Momenteel wordt het geïntegreerde hybride computingmodel in Azure Quantum ondersteund op Quantinuumtargets.
Quantinuum
Ondersteunde functie | Notities |
---|---|
Klassieke lussen | Alleen gebonden lussen |
Willekeurige controlestroom | Gebruik van if/else-vertakking |
Meting van mid-circuit | Maakt gebruik van klassieke registerresources |
Qubit opnieuw gebruiken | N.v.t. |
Klassieke berekeningen in realtime | Rekenkundig 32-bits geheel getal zonder teken Maakt gebruik van klassieke registerresources |
Aan de slag
Als u geïntegreerde hybride programmering wilt verkennen, raden we u aan de voorbeelden in dit artikel door te nemen of het tabblad Hybride kwantumcomputing te verkennen in de galerie Voorbeelden van de Azure Quantum-portal.
Geïntegreerde hybride taken indienen
Wanneer u een geïntegreerde hybride taak indient, moet u een target mogelijkheidsparameter toevoegen nadat u de targethebt opgegeven. Daarnaast worden geïntegreerde hybride programma's in Azure Quantum uitgevoerd en beheerd, net als gewone kwantumtaken. Elke taak heeft één taak-id en het resultaat is één histogram.
Belangrijk
Geïntegreerde hybride kwantumcomputing wordt momenteel niet ondersteund door de extensie Modern Quantum Development Kit (Modern QDK) voor Visual Studio Code, samen met andere onderdelen in de voorbeelden op deze pagina, zoals de I-kernelQ# , de %azure
magic-opdracht of de qsharp.azure
module. Als u geïntegreerde hybride taken wilt uitvoeren, gebruikt u microsoft Quantum Development Kit (klassieke QDK). Zie Doorgaan met werken in de klassieke QDK voor meer informatie.
IQ#
Wanneer u de I-kernelQ# in een Jupyter Notebook gebruikt, gebruikt u %azure.target-capability magic-opdracht met de AdaptiveExecution
parameter .
%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution
Python + Q#
Wanneer u het Python-pakket qsharp gebruikt, gebruikt u de qsharp.azure.target_capability
functie met de AdaptiveExecution
parameter .
qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")
Azure CLI
Wanneer u de Azure CLI gebruikt om een taak te verzenden, voegt u de --target-capability
parameter toe met de waarde AdaptiveExecution
.
az quantum job submit \
--target-capability AdaptiveExecution \
--target-id quantinuum.sim.h1-1e \
--job-name IterativePhaseEstimation \
--shots 100 \
--output table
Geïntegreerde hybride taken verzenden binnen een sessie
U kunt meerdere geïntegreerde hybride taken binnen een sessie combineren met behulp van Q# en Python. Wanneer u een sessie verzendt, voegt u de targetCapability
invoerparameter toe met de waarde 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
Zie Aan de slag met sessies voor meer informatie.
Notitie
Hoewel sessies beschikbaar zijn voor alle hardwareproviders voor kwantumcomputing, ziet u dat geïntegreerde hybride kwantumcomputingtaken momenteel worden ondersteund op Quantinuum targets.
De kosten van een geïntegreerde hybride taak schatten
U kunt de kosten van het uitvoeren van een geïntegreerde hybride taak op Quantinuum-hardware schatten door deze eerst op een emulator uit te voeren.
Na een geslaagde uitvoering op de emulator:
- Selecteer Taakbeheer in uw Azure Quantum-werkruimte.
- Selecteer de taak die u hebt verzonden.
- Selecteer in het pop-upvenster Taakdetailsde optie Kostenraming om weer te geven hoeveel eHQC's (Quantinuum-emulatortegoeden) zijn gebruikt. Dit getal wordt rechtstreeks omgezet in het aantal HQCs (Quantinuum quantum credits) dat nodig is om de taak uit te voeren op Quantinuum-hardware.
Notitie
Met Quantinuum wordt het hele circuit uitgeschreven en worden de kosten voor alle codepaden berekend, ongeacht of ze voorwaardelijk worden uitgevoerd of niet.
Geïntegreerde hybride voorbeelden
In de volgende voorbeelden ziet u de huidige functieset voor geïntegreerde hybride computing.
- Een verstrengelde GHZ-status controleren
- Herhaling van drie qubits
- Iteratieve faseschatting
Vereisten
- Als u geen gebruik hebt van Azure Quantum, hebt u een Azure-abonnement en een Azure Quantum-werkruimte nodig om de voorbeelden uit te voeren op kwantumhardware. Zie Een Azure Quantum-werkruimte maken voor meer informatie.
- VS Code en de Quantum Development Kit installatie in uw lokale omgeving. Zie De instellen Quantum Development Kitvoor meer informatie.
- Zorg ervoor dat VS Code de nieuwste versie van de Quantum Development Kit (0.27.258160) heeft.
- Selecteer in VS Code Ctrl + Shift + X en zoek naar 'Microsoft Quantum Development Kit'.
De voorbeelden in dit artikel zijn ingesteld om te worden uitgevoerd in Visual Studio (VS) Code en gebruiken de ingebouwde Azure-opdrachtregelinterface (CLI) om de taak naar Azure Quantum te verzenden. Als u de Jupyter Notebook versie van deze en andere voorbeelden wilt uitvoeren, meldt u zich aan bij uw Azure Portal werkruimte en bekijkt u de voorbeelden op het tabblad Hybride kwantumcomputing in de galerie Voorbeelden. U kunt het notebook uitvoeren in de cloud of het downloaden en lokaal uitvoeren.
Zie Problemen met geïntegreerde hybride oplossen om problemen met geïntegreerde hybride programma's op te lossen.
In dit voorbeeld ontdekt u hoe u klassieke en kwantuminstructies combineert in hetzelfde programma, allemaal volledig verwerkt door de back-end van kwantumcomputing.
Functies om rekening mee te houden over dit voorbeeld:
- De lus- en qubitmetingen vinden plaats terwijl de qubits coherent blijven.
- De routine combineert klassieke en kwantumberekeningsbewerkingen.
- U hoeft niet te leren programmeren voor gespecialiseerde hardware met hoge prestaties die naast de QPU wordt uitgevoerd (zoals FPGA's).
- Als u een equivalent programma uitvoert zonder de geïntegreerde hybride functies, moet elk tussenliggend meetresultaat worden geretourneerd en vervolgens de naverwerking van de gegevens worden uitgevoerd.
Een VS Code-project maken
Maak in VS Code een nieuw Q# zelfstandig consoletoepassingsproject met de naam CheckGHZ.
- Selecteer Opdrachtpallet weergeven >>Q#: Nieuwe project > zelfstandige consoletoepassing maken
Vervang de configuratie in CheckGHZ.csproj door het volgende:
<Project Sdk="Microsoft.Quantum.Sdk/0.27.258160"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>quantinuum</ExecutionTarget> <TargetCapability>AdaptiveExecution</TargetCapability> </PropertyGroup> </Project>
Vervang de code in Program.qs door het volgende:
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; } }
Maak vanuit een terminalvenster in VS Code verbinding met uw Azure Quantum-werkruimte en stel de standaardresources in.
az login
Notitie
Uw Azure-abonnements-id, resourcegroep en werkruimtenaam kunnen worden weergegeven in het terminalvenster nadat u zich hebt aangemeld door az quantum workspace list uit te voeren. U kunt ze ook vinden in de Azure Portal op de pagina Overzicht van uw Azure Quantum-werkruimte.
az account set --subscription <MySubscriptionID> az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
Verzend de taak en bekijk de resultaten. Voor deze uitvoering worden ongeveer 10,65 eHQC's (quantinuum-emulatorfactureringseenheden) gebruikt
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]
Volgende stappen
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor