Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Kwantumapparaten zijn nog steeds een opkomende technologie en helaas kunnen niet alle apparaten elke Q#-code uitvoeren. Daarom moet u rekening houden met enkele beperkingen bij het ontwikkelen van kwantumprogramma's. De target profieltypen worden gebruikt om de mogelijkheden te definiëren van de kwantumapparaten die u kunt target met uw Q#-programma's, dat wil weten de mogelijkheden van de huidige kwantumapparaten die beschikbaar zijn in Azure Quantum.
In dit artikel worden de verschillende typen target profielen in Azure Quantum besproken, hun beperkingen en hoe u ze configureert met behulp van de Quantum Development Kit (QDK).
Doelprofielen en hun beperkingen
Momenteel beheren Azure Quantum en QDK drie verschillende target-profielen, afhankelijk van hun mogelijkheid om QIR-programma's (Quantum Intermediate Representation) uit te voeren.
- Unrestricted: Dit profiel kan elk QIR-programma en dus elk Q#-programma uitvoeren binnen de limieten van het geheugen voor simulators of het aantal qubits voor fysieke kwantumcomputers.
-
QIR base: Dit profiel kan elk Q#-programma uitvoeren waarvoor het gebruik van de resultaten van qubitmetingen niet nodig is om de programmastroom te beheren. Binnen een Q#-programma dat is gericht op dit type QPU, bieden waarden van het type
Result
geen ondersteuning voor gelijkheidsvergelijking. -
QIR Adaptive RI: Dit profiel heeft beperkte mogelijkheden om de resultaten van qubitmetingen te gebruiken om de programmastroom te beheren. Binnen een Q#-programma dat is gericht op dit type QPU, kunt u waarden van het type
Result
vergelijken als onderdeel van voorwaarden inif
bewerkingen, waardoor middelste circuitmeting mogelijk is.
Programma's maken en uitvoeren voor Unrestrictedtarget profiel
Unrestricted target profielen kunnen elk programma uitvoeren, wat betekent dat u Q#-programma's kunt schrijven zonder functionaliteitsbeperkingen. Azure Quantum biedt geen enkele target bij dit profiel. U kunt echter Q#-programma's uitvoeren Unrestricted op simulators die worden geleverd door de QDK.
Profiel configureren Unrestrictedtarget
In Visual Studio Code:
- Selecteer Weergave -> Opdrachtpalet en typ Q#: Stel het Azure Quantum QIR-profiel target in. Druk op Enter.
- Selecteer Onbeperkt.
In Python kunt u het target profiel instellen met behulp van de qsharp.init
methode.
qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted)
Programma's maken en uitvoeren voor QIR Basetarget profiel
QIR Base
target profielen kunnen een groot aantal Q#-toepassingen uitvoeren, met de beperking dat ze geen resultaten van qubitmetingen kunnen gebruiken om de programmastroom te beheren. Meer specifiek bieden waarden van het type Result
geen ondersteuning voor gelijkheidsvergelijking.
Deze bewerking kan bijvoorbeeld niet worden uitgevoerd op een QIR Basetarget:
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
Als u deze bewerking probeert uit te voeren op een QIR Basetarget, mislukt de bewerking omdat er een vergelijking wordt uitgevoerd met behulp van een meetresultaat (M(q) == Zero
) om de rekenstroom met een if
instructie te beheren. Hetzelfde geldt voor elk type voorwaardelijke vertakking, zoals elif
en else
instructies.
Profiel configureren QIR Basetarget
In Visual Studio Code:
- Selecteer Weergave -> Opdrachtpalet en typ Q#: Stel het Azure Quantum QIR-profiel target in. Druk op Enter.
- Selecteer QIR-basis.
In Python kunt u het target profiel instellen met behulp van de qsharp.init
methode.
qsharp.init(target_profile=qsharp.TargetProfile.Base)
Ondersteunde targets voor QIR Basetarget-profiel
Momenteel zijn de volgende QIR Basetargets beschikbaar in Azure Quantum:
Provider: IonQ
-
IonQ-simulator (
ionq.simulator
) -
IonQ QPU (
ionq.qpu.*
)
-
IonQ-simulator (
Provider: Rigetti
-
Rigetti Simulator (
rigetti.sim.*
) -
Rigetti QPU (
rigetti.qpu.*
)
-
Rigetti Simulator (
Programma's maken en uitvoeren voor QIR Adaptive RItarget profiel
QIR Adaptive RI het profiel targets kan een groot aantal Q#-toepassingen uitvoeren, met enkele beperkingen. Dit profieltype veronderstelt een verbetering ten opzichte QIR Base van profielen, maar is nog steeds onderhevig aan enkele beperkingen.
QIR Adaptive RI Profiel targets maakt het mogelijk om op metingen gebaseerde voorwaardelijke bewerkingen en halverwege circuitmetingen uit te voeren, wat inhoudt dat qubits selectief gemeten kunnen worden op een ander punt dan de eindinstructie van een kwantumprogramma en dat de uitvoer van de meting kan worden gebruikt in andere bewerkingen. Metingen in het middencircuit maken meerdere metingen mogelijk op elk punt in het kwantumprogramma. De kwantumgegevens van de gemeten qubits worden samengevouwen tot een klassieke status (nul of één), maar de niet-gemeten qubits blijven in hun kwantumstatus.
Bij het meten van een qubit wordt in Q# een waarde van het type Result
geretourneerd. Als u dit resultaat in een voorwaardelijke instructie wilt gebruiken, moet u deze rechtstreeks vergelijken in de voorwaardelijke instructie. De bijbehorende voorwaardelijke blokken mogen geen return
- of set
-instructies bevatten.
De volgende Q#-code is bijvoorbeeld toegestaan in een QIR Adaptive RItarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Profiel configureren QIR Adaptive RItarget
In Visual Studio Code:
- Selecteer Weergave -> Opdrachtpalet en typ Q#: Stel het Azure Quantum QIR-profiel target in. Druk op Enter.
- Selecteer QIR Adaptive RI.
In Python kunt u het target profiel instellen met behulp van de qsharp.init
methode.
qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)
Ondersteund targets voor QIR Adaptive RItarget-profiel
Momenteel zijn de volgende QIR Adaptive RItargets beschikbaar in Azure Quantum:
-
Aanbieder: Quantinuum
-
Quantinuum Emulators (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) -
Kwantinuum QPUs (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
-
Quantinuum Emulators (