Typy cílových profilů v Azure Quantum
Tento článek popisuje různé typy target profilů dostupné v poskytovatelích kvantových výpočtů v Azure Quantum. V této době mají kvantová zařízení kvůli počáteční fázi vývoje v terénu určitá omezení a požadavky na programy, které na nich běží.
QPU (Quantum Processing Units): různé profily a jejich omezení
QPU (Quantum Processing Unit) je fyzický nebo simulovaný procesor, který obsahuje řadu vzájemně propojených qubitů, se kterými je možné manipulovat za účelem výpočtu kvantových algoritmů. Je to centrální součást kvantového počítače nebo kvantového simulátoru.
Kvantová zařízení jsou stále vznikající technologií a ne všechna z nich dokážou spouštět veškerý kód Q#. Proto je třeba při vývoji programů pro různé targets. Azure Quantum a QDK v současné době spravují tři různé profily pro QPU:
- Full: Tento profil může spustit libovolný program Q# v rámci limitů paměti pro simulátory nebo počtu qubitů pro fyzické kvantové počítače.
- No Control Flow: Tento profil může spouštět jakýkoli program Q#, který k řízení toku programu nevyžaduje použití výsledků z měření qubitů. V rámci programu targetQ# určeného pro tento druh QPU hodnoty typu
Result
nepodporují porovnání rovnosti. - Basic Measurement Feedback: Tento profil má omezenou možnost používat výsledky z měření qubitů k řízení toku programu. V rámci programu targetQ# 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í mezi okruhy. Odpovídající podmíněné bloky nemusí obsahovatreturn
příkazy neboset
.
Vytváření a spouštění aplikací pro Full profil targets
Full profile targets může spouštět jakýkoli program v jazyce Q#, což znamená, že můžete psát programy bez omezení funkčnosti. Azure Quantum zatím s tímto profilem žádné neposkytuje target .
Vytváření a spouštění aplikací pro No Control Flow profil targets
No Control Flow profile targets může spouštět širokou škálu aplikací V# 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.
Například tuto operaci nelze spustit na No Control Flowtarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if (desired != M(q)) {
X(q);
}
}
Pokus o spuštění této operace se No Control Flowtarget nezdaří, protože vyhodnocuje porovnání mezi dvěma výsledky (desired != M(q)
) a řídí výpočetní tok příkazem if
. To se bude vztahovat na jakýkoli typ podmíněného větvení, jako elif
jsou příkazy a else
.
Poznámka
V současné době nemůžete odesílat kvantové programy, které používají operace na qubitech měřených v No Control Flowtargetsnástroji , ani když výsledky nepoužíváte k řízení toku programu. To znamená, No Control Flowtargets že nepovolujte měření středního okruhu.
Například následující kód nelze spustit na No Control Flowtarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SampleMeasuredQubit(q : Qubit) : Result {
H(MeasureQubit(q));
return M(MeasureQubit(q));
}
V současné době jsou pro Azure Quantum k dispozici tyto No Control Flowtargets :
Zprostředkovatel: IonQ
- Simulátor IonQ (
ionq.simulator
) - IonQ QPU (
ionq.qpu
)
- Simulátor IonQ (
Zprostředkovatel: Rigetti
- Simulátor Rigetti (
rigetti.sim.*
) - Rigetti QPU (
rigetti.qpu.*
)
- Simulátor Rigetti (
Vytváření a spouštění aplikací pro Basic Measurement Feedback profil targets
Basic Measurement Feedback profile targets může spouštět celou řadu aplikací jazyka Q# s omezením, že hodnoty typu Result
můžete porovnávat pouze jako součást podmínek v rámci if
příkazů v operacích. Tento typ profilu předpokládá zlepšení oproti No Control Flow profilům, ale stále podléhá určitým omezením.
Basic Measurement Feedback profile targets umožňují podmíněné operace založené na měření a měření středního okruhu, což znamená, že qubity lze 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íce měření v libovolném bodě v rámci kvantového programu. Kvantová informace měřených qubitů se sbalí do klasického stavu (nula nebo jedna), ale neměřené qubity si zachovávají svůj kvantový stav.
V Q# se při měření qubitu vrátí hodnota typu Result
. Pokud chcete tento výsledek použít v podmíněném příkazu, musíte přímo porovnat v podmíněném příkazu. Odpovídající podmíněné bloky nemusí obsahovat return
příkazy nebo set
.
Například následující kód jazyka Q# by byl povolený v Basic Measurement Feedbacktargetsouboru :
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); )
}
Stejný kód s přesunutým logickým vyhodnocením by však nebyl povolený:
operation BeOne(q : Qubit) : Bool {
return M(q) == One;
}
operation SetToZeroUsingBeOne(q : Qubit) : Unit {
if BeOne(q) { X(q); }
}
Operaci SetQubitState
v nástroji No Control Flow lze použít v objektu, Basic Measurement Feedbacktarget pokud do if
příkazu nezahrnete žádný return
příkaz nebo set
. To se bude vztahovat na jakýkoli typ podmíněného větvení, jako elif
jsou příkazy a else
. Například následující operaci nelze použít v Basic Measurement Feedbacktarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if desired != M(q) {
X(q);
return M(q);
}
}
V současné době jsou pro Azure Quantum k dispozici tyto Basic Measurement Feedbacktargets :
- Zprostředkovatel: Quantinuum
- Emulátory Quantinuum (
quantinuum.sim.h1-1e
,quantinuum.sim.h2-1e
) - QPU Quantinuum (
quantinuum.qpu.h1-1
,quantinuum.qpu.h2-1
)
- Emulátory Quantinuum (
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro