Typy profilů QIR target v Azure Quantum
Tento článek popisuje různé typy profilů QIR target dostupné v poskytovatelích kvantových výpočtů v Azure Quantum. Typy profilů QIR target se používají k definování možností kvantových zařízení, která můžete target používat v programech Q#.
Target profily a jejich omezení
Kvantové zařízení jsou stále vznikající technologií a ne všechny z nich můžou spouštět veškerý kód Q#. Proto je třeba mít na paměti určitá omezení při vývoji programů pro různé targets. Azure Quantum a QDK v současné době spravují tři různé target profily:
- Unrestricted: Tento profil může spustit libovolný program QIR v mezích paměti pro simulátory nebo počet qubitů pro fyzické kvantové počítače.
- QIR base: Tento profil může spustit jakýkoli program Q#, který nevyžaduje použití výsledků z měření qubitu k řízení toku programu. V rámci programu Q# určeného pro tento druh QPU hodnoty typu
Result
nepodporují porovnání rovnosti. - QIR Adaptive RI: Tento profil má omezenou schopnost používat výsledky z měření qubitu k řízení toku programu. V rámci programu Q# určeného pro tento druh QPU můžete porovnat hodnoty typu
Result
jako součást podmínek v rámciif
příkazů v operacích, což umožňuje měření středního okruhu.
Vytváření a spouštění aplikací pro Unrestrictedtarget profil
Unrestrictedtarget profily můžou spouštět jakýkoli program, což znamená, že můžete psát programy v Q# bez omezení funkčnosti. Azure Quantum neposkytuje žádný target profil. Programy Q# ale můžete spouštět Unrestricted na simulátorech poskytovaných QDK.
Konfigurace Unrestrictedtarget profilu
V editoru Visual Studio Code:
- Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
- Vyberte Neomezený.
V Pythonu target můžete profil nastavit pomocí qsharp.init
metody.
qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted)
Vytváření a spouštění aplikací pro QIR Basetarget profil
QIR Basetarget profily můžou spouštět širokou škálu aplikací Q# s omezením, že nemůžou používat výsledky z měření qubitu k řízení toku programu. Konkrétně hodnoty typu Result
nepodporují porovnání rovnosti.
Tuto operaci například nejde spustit na QIR Basetarget:
operation FlipQubitOnZero() : Unit {
use q = Qubit();
if M(q) == Zero {
X(q);
}
}
Pokud se pokusíte spustit tuto operaci na operaci QIR Basetarget, operace selže, protože provede porovnání pomocí výsledku měření (M(q) == Zero
) k řízení výpočetního toku pomocí if
příkazu. Totéž platí pro jakýkoli typ podmíněného větvení, jako elif
jsou a else
příkazy.
Konfigurace QIR Basetarget profilu
V editoru Visual Studio Code:
- Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
- Vyberte základ QIR.
V Pythonu target můžete profil nastavit pomocí qsharp.init
metody.
qsharp.init(target_profile=qsharp.TargetProfile.Base)
Podporovaný targets
QIR Basetargets V současné době jsou k dispozici pro Azure Quantum:
Poskytovatel: IonQ
Poskytovatel: Rigetti
- Simulátor Rigetti (
rigetti.sim.*
) - Rigetti QPU (
rigetti.qpu.*
)
- Simulátor Rigetti (
Vytváření a spouštění aplikací pro QIR Adaptive RI profil targets
QIR Adaptive RI profil targets může spouštět širokou škálu aplikací Q# s určitými omezeními. Tento typ profilu předpokládá vylepšení profilů QIR Base , ale stále podléhá určitým omezením.
QIR Adaptive RI profil targets umožňuje podmíněné operace založené na měření a měření středního okruhu, což znamená, že qubity je možné selektivně měřit v jiném bodě, než je konečný příkaz kvantového programu, a výstup měření lze použít v jiných operacích. Měření středního okruhu umožňuje v libovolném okamžiku v kvantovém programu více měření. Kvantové informace měřených qubitů se sbalí do klasického stavu (nula nebo jedna), ale neměřené qubity zůstanou ve svém kvantovém stavu.
Při měření qubitu se v Q# vrátí hodnota typu Result
. Pokud chcete tento výsledek použít v podmíněném příkazu, musíte v podmíněném příkazu přímo porovnat. Odpovídající podmíněné bloky nemusí obsahovat return
ani set
příkazy.
Například následující kód Q# by byl povolen v QIR Adaptive RItarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); }
}
Konfigurace QIR Adaptive RItarget profilu
V editoru Visual Studio Code:
- Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
- Vyberte možnost QIR Adaptive RI.
V Pythonu target můžete profil nastavit pomocí qsharp.init
metody.
qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI)
Podporovaný targets
QIR Adaptive RItargets V současné době jsou k dispozici pro Azure Quantum:
- Zprostředkovatel: Quantinuum
- Emulátory Quantinuum (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - Quantinuum QPU (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Emulátory Quantinuum (