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.
Kwantumcomputing is nog steeds een opkomende technologie. Niet alle kwantumhardware kan alle kwantumprogramma's uitvoeren. Zo kan bijvoorbeeld alleen bepaalde hardware gemiddelde circuitmetingen uitvoeren. Dit is vereist voor het uitvoeren van programma's met voorwaardelijke vertakkingen op basis van de resultaten van qubitmetingen.
Wanneer u een programma indient om uit te voeren op Azure Quantum, wordt uw programma omgezet naar de indeling voor quantum intermediate representation (QIR). QIR is niet afhankelijk van de programmeertaal of het type kwantumhardware waarop uw programma wordt uitgevoerd. De MicrosoftQuantum Development-kit (QDK) ondersteunt verschillende QIR doelprofielen voor verschillende hardwaremogelijkheden.
Overzicht van doelprofielen
Azure Quantum en de QDK ondersteunen verschillende QIR doelprofielen. Het type doelprofiel dat u kiest, bepaalt welke van de volgende programmeerconstructies uw programma kan gebruiken.
- Voorwaardelijke vertakkingen met
ifinstructies op basis van de meetresultaten van qubits - Rekenkundige bewerkingen op drijvende-kommanummers berekend op basis van qubitmetingsresultaten
- Vaste en niet-gebonden lussen op basis van resultaten van qubitmeting
De volgende tabel bevat alle QIR doelprofielen in de QDK en de programmeerconstructies die de doelprofielen ondersteunen, in volgorde van meest tot minst beperkend.
| QIR doelprofiel | Conditionele vertakkingen | Drijvendekommabewerkingen | Loops |
|---|---|---|---|
| Base | ❌ | ❌ | ❌ |
| Adaptive RI | ✅ | ❌ | ❌ |
| Adaptive RIF | ✅ | ✅ | ❌ |
| Adaptive | ✅ | ✅ | ✅ |
| Unrestricted | ✅ | ✅ | ✅ |
Stel doelprofielen in de QDK
Als u een programma wilt uitvoeren op de QDK-simulators of het Azure Quantum-doel, moet u een QIR-doelprofiel instellen. Als u geen doelprofiel handmatig instelt, QDK wordt geprobeerd het juiste profiel automatisch in te stellen voor het gekozen doel.
bij het verzenden van programma's die via de Azure Quantum service moeten worden uitgevoerd, QDK wordt geprobeerd automatisch het juiste profiel te selecteren voor het gekozen uitvoeringsdoel.
Base QIR profiel
Het basisdoelprofiel QIR is het meest beperkende profiel. Gebruik het basisprofiel voor eenvoudigere programma's die geen klassieke programmeerstructuren gebruiken, zoals vertakkingen en lussen. Als uw kwantumhardwaredoel geen gemiddelde circuitmetingen kan uitvoeren, moet u waarschijnlijk het basisprofiel gebruiken.
De volgende Azure Quantum doelen kunnen programma's uitvoeren die gebruikmaken van het basisprofiel QIR .
| Provider | Simulator | QPU |
|---|---|---|
| IonQ | ionq.simulator |
ionq.qpu.* |
| Rigetti | rigetti.sim.* |
rigetti.qpu.* |
Zie Azure Quantum en Rigetti-provider voor meer informatie over deze providers.
Het basisprofiel instellen
Als u het basisdoelprofiel QIR wilt instellen in de QDK extensie voor Visual Studio Code (VS Code), kiest u een van de volgende opties.
Als u een Q#-project instelt, voegt u de volgende opdracht toe aan het
qsharp.jsonprojectbestand.{ "targetProfile": "base" }Als u in een
.qsbestand werkt dat geen deel uitmaakt van een Q#-project, stelt u het doelprofiel rechtstreeks in uw Q#-code in. Voeg hiervoor de regel toe@EntryPoint(Base)vóór de invoerpuntbewerking in uw programma.@EntryPoint(Base) operation Main() : Unit { ... }
Voer de volgende code uit om het basisdoelprofiel in te stellen in het QDK Python-pakket.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Base)
Beperkingen voor Q#-programma's met basisprofiel
Het basisdoelprofiel kan een groot aantal Q#-programma's uitvoeren. De belangrijkste beperking is dat Q#-programma's geen logische vergelijkingen kunnen uitvoeren met Result typewaarden uit meetbewerkingen.
U kunt bijvoorbeeld de volgende FlipQubitOnZero bewerking niet uitvoeren op een basisdoel omdat het programma een if instructie bevat die gebruikmaakt van een meetresultaat.
@EntryPoint(Base)
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
Adaptive RI QIR profiel
Het adaptieve RI-doelprofiel kan een grotere verscheidenheid aan programma's uitvoeren dan het basisprofiel, maar heeft nog enkele beperkingen.
Adaptive RI is gericht op programma's die metingen halverwege het circuit gebruiken in voorwaardelijke if-instructies. Als uw kwantumhardware metingen midden in het circuit kan uitvoeren en uw programma if-instructies gebruikt op basis van meetresultaten, moet u waarschijnlijk gebruikmaken van het adaptieve RI-profiel.
Het volgende Q#-programma kan bijvoorbeeld worden uitgevoerd op een adaptief RI-doel.
@EntryPoint(Adaptive_RI)
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
De volgende Azure Quantum doelen kunnen programma's uitvoeren die gebruikmaken van het adaptieve RI-doelprofiel.
| Provider | Simulator | QPU |
|---|---|---|
| Quantinuum | quantinuum.sim.h2-1e |
quantinuum.qpu.h2-1 |
| Quantinuum | quantinuum.sim.h2-2e |
quantinuum.qpu.h2-2 |
Zie Azure Quantum voor meer informatie over Quantinuum in .
Het adaptieve RI-profiel instellen
Als u het adaptieve RI-doelprofiel QIR in de QDK extensie voor VS Code wilt instellen, kiest u een van de volgende opties.
Als u een Q#-project instelt, voegt u de volgende opdracht toe aan het bestand van
qsharp.jsonuw project:{ "targetProfile": "adaptive_ri" }Als u in een
.qsbestand werkt dat geen deel uitmaakt van een Q#-project, stelt u het doelprofiel rechtstreeks in uw Q#-code in. Voeg hiervoor de regel toe@EntryPoint(Adaptive_RI)vóór de invoerpuntbewerking in uw programma.@EntryPoint(Adaptive_RI) operation Main() : Unit { ... }
Voer de volgende code uit om het adaptieve RI-doelprofiel in te stellen in het QDK Python-pakket.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Adaptive_RI)
Adaptive RIF QIR profiel
Het adaptieve RIF-doelprofiel heeft dezelfde mogelijkheden als het adaptieve RI-profiel, maar ondersteunt ook programma's die rekenkundige bewerkingen met drijvende komma bevatten. Als uw kwantumhardware metingen tijdens het circuit kan uitvoeren en uw programma if-statements en drijvende-kommagetallen gebruikt die op basis van meetresultaten zijn berekend, moet u waarschijnlijk het adaptieve RIF-profiel gebruiken.
Het volgende Q#-programma kan bijvoorbeeld worden uitgevoerd op een adaptief RIF-doel.
@EntryPoint(Adaptive_RIF)
operation DynamicFloat() : Double {
use q = Qubit();
H(q);
mutable f = 0.0;
if M(q) == One {
f = 0.5;
}
Reset(q);
return f;
}
Azure Quantum heeft momenteel geen adaptieve RIF-doelen, maar u kunt programma's uitvoeren voor adaptieve RIF-doelen op de lokale QDK simulators. Zie voor meer informatie over simulators in de QDK, Overzicht van kwantumsimulators in de QDK.
Het adaptieve RIF-profiel instellen
Als u het adaptieve RIF-doelprofiel QIR wilt instellen in de QDK extensie voor VS Code, kiest u een van de volgende opties.
Als u een Q#-project instelt, voegt u de volgende opdracht toe aan het bestand van
qsharp.jsonuw project:{ "targetProfile": "adaptive_rif" }Als u in een
.qsbestand werkt dat geen deel uitmaakt van een Q#-project, stelt u het doelprofiel rechtstreeks in uw Q#-code in. Voeg hiervoor de regel toe@EntryPoint(Adaptive_RIF)vóór de invoerpuntbewerking in uw programma.@EntryPoint(Adaptive_RIF) operation Main() : Unit { ... }
Voer de volgende code uit om het adaptieve RIF-doelprofiel in te stellen in het QDK Python-pakket.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Adaptive_RIF)
Adaptive QIR profiel
Het adaptieve doelprofiel heeft dezelfde mogelijkheden als het adaptieve RIF-profiel, maar ondersteunt ook programma's die gebruikmaken van lussen op basis van meetresultaten. Adaptive programma's kunnen lussen gebruiken met een vast aantal iteraties en RUS-lussen (repeat-until-success).
Azure Quantum heeft momenteel geen adaptieve doelen, maar u kunt programma's uitvoeren voor adaptieve doelen op de lokale QDK simulators. Zie voor meer informatie over simulators in de QDK, Overzicht van kwantumsimulators in de QDK.
Het adaptieve profiel instellen
Als u het adaptieve QIR doelprofiel in de QDK extensie voor VS Code wilt instellen, kiest u een van de volgende opties.
Als u een Q#-project instelt, voegt u de volgende opdracht toe aan het bestand van
qsharp.jsonuw project:{ "targetProfile": "adaptive" }Als u in een
.qsbestand werkt dat geen deel uitmaakt van een Q#-project, stelt u het doelprofiel rechtstreeks in uw Q#-code in. Voeg hiervoor de regel toe@EntryPoint(Adaptive)vóór de invoerpuntbewerking in uw programma.@EntryPoint(Adaptive) operation Main() : Unit { ... }
Voer de volgende code uit om het adaptieve doelprofiel in te stellen in het QDK Python-pakket.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Adaptive)
Unrestricted QIR profiel
Het onbeperkte doelprofiel kan alle kwantumprogramma's uitvoeren. Er is geen huidig kwantumdoel dat onbeperkte QIRondersteuning biedt, maar u kunt het onbeperkte profiel gebruiken om complexe programma's uit te voeren op de QDK simulators voor kwantumontwikkeling.
Het onbeperkte profiel instellen
Als u het onbeperkte QIR doelprofiel in de QDK extensie voor VS Code wilt instellen, kiest u een van de volgende opties.
Als u een Q#-project instelt, voegt u de volgende opdracht toe aan het bestand van
qsharp.jsonuw project:{ "targetProfile": "unrestricted" }Als u in een
.qsbestand werkt dat geen deel uitmaakt van een Q#-project, stelt u het doelprofiel rechtstreeks in uw Q#-code in. Voeg hiervoor de regel toe@EntryPoint(Unrestricted)vóór de invoerpuntbewerking in uw programma.@EntryPoint(Unrestricted) operation Main() : Unit { ... }
Voer de volgende code uit om het onbeperkte doelprofiel in te stellen in het QDK Python-pakket.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Unrestricted)