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ámci if 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:

  1. Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
  2. 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:

  1. Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
  2. 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:

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:

  1. Vyberte Zobrazit –> Paleta příkazů a zadejte Q#: Nastavte profil Azure Quantum QIRtarget. Stiskněte klávesu Enter.
  2. 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)