Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Kvantové výpočty jsou stále vznikající technologií. Ne veškerý kvantový hardware může spouštět všechny kvantové programy. Například pouze určitý hardware může provádět měření středního okruhu, což je nutné ke spouštění programů s podmíněnými větvemi na základě výsledků měření qubitu.
Když odešlete program ke spuštění v Azure Quantum, váš program se převede do formátu kvantové mezireprezentace (QIR). QIR nezávisí na programovacím jazyce nebo typu kvantového hardwaru, na kterém běží váš program. Microsoft(Quantum Development KitQDK) podporuje několik QIR cílových profilů pro různé hardwarové funkce.
Další informace o QIR naleznete v části Kvantová prostřední reprezentace.
Přehled cílových profilů
Azure Quantum a QDK podporují několik QIR cílových profilů. Typ cílového profilu, který zvolíte, určuje, které z následujících programovacích konstruktorů může program použít.
- Podmíněné větvení s příkazy
ifna základě výsledků měření qubitů - Aritmetické operace s čísly s pohyblivou řádovou čárkou vypočítané z výsledků měření qubitu
- Pevné a nevázané smyčky založené na výsledcích měření qubitu
V následující tabulce jsou uvedeny všechny QIR cílové profily v QDK a programové konstrukce, které tyto cílové profily podporují, v pořadí od nejvíce omezujících po nejméně omezující.
| QIR cílový profil | Podmíněné větve | Operace s pohyblivou řádovou čárkou | Loops |
|---|---|---|---|
| Base | ❌ | ❌ | ❌ |
| Adaptive RI | ✅ | ❌ | ❌ |
| Adaptive RIF | ✅ | ✅ | ❌ |
| Adaptive | ✅ | ✅ | ✅ |
| Unrestricted | ✅ | ✅ | ✅ |
Nastavení cílových profilů v nástroji QDK
Pokud chcete spustit program na QDK simulátorech nebo Azure Quantum cíli, musíte nastavit QIR cílový profil. Pokud cílový profil nenastavíte ručně, QDK pokusí se automaticky nastavit příslušný profil pro vybraný cíl.
při odesílání programů, které mají být spuštěny službou Azure Quantum , QDK se pokusí automaticky vybrat příslušný profil pro vybraný cíl spuštění.
Base QIR profil
Základní QIR cílový profil je nejvíce omezující. Základní profil použijte pro jednodušší programy, které nepoužívají klasické programovací struktury, jako jsou větve a smyčky. Pokud váš cílový kvantový hardware neumí provádět měření uprostřed obvodu, pravděpodobně budete muset použít základní profil.
Následující Azure Quantum cíle mohou spouštět programy, které používají základní QIR profil.
| Provider | Simulátor | QPU |
|---|---|---|
| IonQ | ionq.simulator |
ionq.qpu.* |
| Rigetti | rigetti.sim.* |
rigetti.qpu.* |
Další informace o těchto Azure Quantum poskytovateli najdete v tématu Poskytovatel IonQ a poskytovatel Rigetti.
Nastavení základního profilu
Pokud chcete nastavit základní QIR cílový profil v QDK rozšíření pro Visual Studio Code (VS Code), zvolte jednu z následujících možností.
Pokud nastavíte projekt Q#, přidejte do souboru projektu
qsharp.jsonnásledující příkaz.{ "targetProfile": "base" }Pokud pracujete v
.qssouboru, který není součástí projektu Q#, nastavte cílový profil přímo v kódu Q#. Uděláte to tak, že přidáte@EntryPoint(Base)na řádek před operaci vstupního bodu v programu.@EntryPoint(Base) operation Main() : Unit { ... }
Pokud chcete nastavit základní cílový profil v QDK balíčku Python, spusťte následující kód.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Base)
Omezení programů v Q# se základním profilem
Základní cílový profil může spouštět širokou škálu programů v jazyce Q#. Hlavním omezením je, že programy Q# nemůžou provádět logické porovnání s Result hodnotami typů z operací měření.
Například nelze spustit následující FlipQubitOnZero operaci na základním cíli, protože program obsahuje if příkaz, který používá výsledek měření.
@EntryPoint(Base)
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
Adaptive RI QIR profil
Adaptivní cílový profil RI může spouštět širší škálu programů než základní profil, ale stále má některá omezení.
Adaptive RI podporuje programy, které používají měření prováděná v průběhu obvodu v podmíněných if příkazech. Pokud váš kvantový hardware dokáže provádět měření středního okruhu a váš program používá if příkazy na základě výsledků měření, budete pravděpodobně muset použít adaptivní profil RI.
Například následující program Q# může běžet na adaptivním cíli RI.
@EntryPoint(Adaptive_RI)
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Následující Azure Quantum cíle mohou spouštět programy, které používají adaptivní profil cíle RI.
| Provider | Simulátor | QPU |
|---|---|---|
| Quantinuum | quantinuum.sim.h2-1e |
quantinuum.qpu.h2-1 |
| Quantinuum | quantinuum.sim.h2-2e |
quantinuum.qpu.h2-2 |
Další informace o Quantinuum in Azure Quantum, viz Quantinuum provider.
Nastavte adaptivní profil RI
Chcete-li v rozšíření QIR pro VS Code nastavit adaptivní cílový profil RI QDK, zvolte jednu z následujících možností.
Pokud nastavíte projekt Q#, přidejte do souboru projektu
qsharp.jsonnásledující příkaz:{ "targetProfile": "adaptive_ri" }Pokud pracujete v
.qssouboru, který není součástí projektu Q#, nastavte cílový profil přímo v kódu Q#. Uděláte to tak, že přidáte@EntryPoint(Adaptive_RI)na řádek před operaci vstupního bodu v programu.@EntryPoint(Adaptive_RI) operation Main() : Unit { ... }
Pokud chcete v balíčku Python nastavit cílový profil QDK adaptivní rezervované instance, spusťte následující kód.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Adaptive_RI)
Adaptive RIF QIR profil
Adaptivní cílový profil RIF má stejné schopnosti jako adaptivní profil RI, ale také podporuje programy obsahující aritmetické operace s čísly s plovoucí řádovou čárkou. Pokud váš kvantový hardware může provádět měření středního okruhu a váš program používá if příkazy a čísla s plovoucí desetinnou čárkou vypočítaná z výsledků měření, budete pravděpodobně muset použít adaptivní profil RIF.
Například následující program Q# může běžet na adaptivním cíli RIF.
@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 v tuto chvíli nemá adaptivní cíle RIF, ale v místních QDK simulátorech můžete spouštět programy pro adaptivní cíle RIF. Další informace o simulátorech v QDK naleznete v článku Přehled kvantových simulátorů v QDK.
Nastavení adaptivního profilu RIF
Pokud chcete nastavit adaptivní cílový profil RIF QIR v QDK rozšíření pro VS Code, zvolte jednu z následujících možností.
Pokud nastavíte projekt Q#, přidejte do souboru projektu
qsharp.jsonnásledující příkaz:{ "targetProfile": "adaptive_rif" }Pokud pracujete v
.qssouboru, který není součástí projektu Q#, nastavte cílový profil přímo v kódu Q#. Uděláte to tak, že přidáte@EntryPoint(Adaptive_RIF)na řádek před operaci vstupního bodu v programu.@EntryPoint(Adaptive_RIF) operation Main() : Unit { ... }
Pokud chcete nastavit adaptivní cílový profil RIF v QDK balíčku Python, spusťte následující kód.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Adaptive_RIF)
Adaptive QIR profil
Adaptivní cílový profil má stejné funkce jako adaptivní profil RIF, ale také podporuje programy, které používají smyčky na základě výsledků měření. Adaptive programy můžou používat smyčky s nastaveným počtem iterací a smyčkami typu repeat-until-success (RUS).
Azure Quantum v tuto chvíli nemá adaptivní cíle, ale můžete spouštět programy pro adaptivní cíle v místních QDK simulátorech. Další informace o simulátorech v QDK naleznete v článku Přehled kvantových simulátorů v QDK.
Nastavení adaptivního profilu
Pokud chcete nastavit adaptivní QIR cílový profil v QDK rozšíření pro VS Code, zvolte jednu z následujících možností.
Pokud nastavíte projekt Q#, přidejte do souboru projektu
qsharp.jsonnásledující příkaz:{ "targetProfile": "adaptive" }Pokud pracujete v
.qssouboru, který není součástí projektu Q#, nastavte cílový profil přímo v kódu Q#. Uděláte to tak, že přidáte@EntryPoint(Adaptive)na řádek před operaci vstupního bodu v programu.@EntryPoint(Adaptive) operation Main() : Unit { ... }
Pokud chcete nastavit adaptivní cílový profil v QDK balíčku Python, spusťte následující kód.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Adaptive)
Unrestricted QIR profil
Neomezený cílový profil může spouštět všechny kvantové programy. Žádný aktuální kvantový cíl nepodporuje neomezené QIR, ale pomocí neomezeného profilu můžete spouštět složité programy na QDK simulátorech pro kvantový vývoj.
Nastavení neomezeného profilu
Pokud chcete nastavit neomezený QIR cílový profil v QDK rozšíření pro VS Code, zvolte jednu z následujících možností.
Pokud nastavíte projekt Q#, přidejte do souboru projektu
qsharp.jsonnásledující příkaz:{ "targetProfile": "unrestricted" }Pokud pracujete v
.qssouboru, který není součástí projektu Q#, nastavte cílový profil přímo v kódu Q#. Uděláte to tak, že přidáte@EntryPoint(Unrestricted)na řádek před operaci vstupního bodu v programu.@EntryPoint(Unrestricted) operation Main() : Unit { ... }
Pokud chcete nastavit neomezený cílový profil v QDK balíčku Python, spusťte následující kód.
from qdk import init, TargetProfile
init(target_profile=TargetProfile.Unrestricted)