Sdílet prostřednictvím


Různé typy profilů target v Azure Quantum

Kvantové zařízení jsou stále vznikající technologií a bohužel ne všechny můžou spouštět každý kód Q#. Proto při vývoji kvantových programů musíte mít na paměti určitá omezení. Typy profilů target slouží k definování schopností kvantových zařízení, která můžete target s programy v jazyce Q#, tj. schopností aktuálních kvantových zařízení dostupných v Azure Quantum.

Tento článek popisuje různé typy profilů target ve službě Azure Quantum, jejich omezení a způsob jejich konfigurace pomocí sady Quantum Development Kit (QDK).

Cílové profily a jejich omezení

Azure Quantum a QDK v současné době spravují tři různé profily target v závislosti na jejich schopnosti spouštět programy kvantového zprostředkujícího znázornění (QIR).

  • Unrestricted: Tento profil může spustit jakýkoli program QIR, a tedy jakýkoli program Q# 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.

Vytvoření a spuštění programů pro profil Unrestrictedtarget

Unrestricted target 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 v rámci tohoto profilu. Programy Q# ale můžete spouštět Unrestricted na simulátorech poskytovaných QDK.

Konfigurovat Unrestrictedtarget profil

V editoru Visual Studio Code:

  1. Vyberte Zobrazit – Příkazová paleta a zadejte Q#: Nastavte profil Azure Quantum QIR. Stiskněte klávesu Enter.
  2. Vyberte Neomezený.

V Pythonu můžete nastavit profil target pomocí metody qsharp.init.

qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted) 

Vytvoření a spuštění programů pro profil QIR Basetarget

QIR Base target 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 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í příkazu if. Totéž platí pro jakýkoli typ podmíněného větvení, jako jsou příkazy elif a else.

Nastavte QIR Basetarget profil

V editoru Visual Studio Code:

  1. Vyberte Zobrazit – Příkazová paleta a zadejte Q#: Nastavte Azure Quantum QIR profil. Stiskněte klávesu Enter.
  2. Vyberte QIR základnu.

Pomocí metody qsharp.init můžete v Pythonu nastavit profil target.

qsharp.init(target_profile=qsharp.TargetProfile.Base) 

Podporováno targets pro profil QIR Basetarget

V současné době jsou v Azure Quantum k dispozici následující QIR Basetargets:

Vytvoření a spuštění programů pro profil QIR Adaptive RItarget

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); }
}

Nakonfigurujte QIR Adaptive RItarget profil

V editoru Visual Studio Code:

  1. Vyberte Zobrazit –> Příkazová paleta a zadejte Q#: Nastavit target profil Azure Quantum QIR. Stiskněte klávesu Enter.
  2. Vyberte možnost QIR Adaptive RI.

Pomocí qsharp.init metody můžete v Pythonu nastavit target profil.

qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI) 

Podporováno targets pro profil QIR Adaptive RItarget

V současné době jsou v Azure Quantum k dispozici následující QIR Adaptive RItargets:

  • Zprostředkovatel: Quantinuum
    • Emulátory Quantinuum (quantinuum.sim.h1-1e, quantinuum.sim.h2-1e)
    • Quantinuum QPU (quantinuum.qpu.h1-1, quantinuum.qpu.h2-1)