Megosztás a következőn keresztül:


QIR-profiltípusok target az Azure Quantumban

Ez a cikk az Azure Quantum kvantum-számítástechnikai szolgáltatóiban elérhető QIR-profiltípusok target különböző típusait ismerteti. A QIR-profiltípusok target a Q#-programokkal használható target kvantumeszközök képességeinek meghatározására szolgálnak.

Target profilok és korlátaik

A kvantumeszközök továbbra is egy új technológia, és nem mindegyik képes az összes Q#-kód futtatására. Ezért figyelembe kell vennie néhány korlátozást a különböző targetsprogramok fejlesztésekor. Az Azure Quantum és a QDK jelenleg három különböző target profilt kezel:

  • Unrestricted: Ez a profil bármilyen QIR-programot futtathat a szimulátorok memóriájának korlátain belül, vagy a fizikai kvantumszámítógépek qubitjeinek számán belül.
  • QIR base: Ez a profil bármely olyan Q#-programot futtathat, amely nem igényli a qubitmérések eredményeinek használatát a programfolyamat szabályozásához. Az ilyen típusú QPU-kra célzott Q#-programokban a típusértékek Result nem támogatják az egyenlőség összehasonlítását.
  • QIR Adaptive RI: Ez a profil korlátozott mértékben képes a qubitmérések eredményeinek felhasználására a programfolyamat szabályozására. Az ilyen típusú QPU-kra célzott Q#-programokban összehasonlíthatja a típusértékeket Result a műveleti utasításokban szereplő if feltételek részeként, lehetővé téve a középső áramkörök mérését.

Alkalmazások létrehozása és futtatása profilhoz Unrestrictedtarget

Unrestrictedtarget a profilok bármilyen programot futtathatnak, ami azt jelenti, hogy q#-programokat is írhat funkciókorlátozások nélkül. Az Azure Quantum nem rendelkezik target ezzel a profillal. A QDK által biztosított szimulátorokon azonban Q#-programokat futtathat Unrestricted .

Profil konfigurálása Unrestrictedtarget

A Visual Studio Code-ban:

  1. Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Az Azure Quantum QIR-profil targetbeállítása. Nyomja le az Enter billentyűt.
  2. Válassza a Korlátlan lehetőséget.

A Pythonban a módszerrel állíthatja be a target profilt qsharp.init .

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

Alkalmazások létrehozása és futtatása profilhoz QIR Basetarget

QIR Basetarget a profilok számos Q#-alkalmazást futtathatnak, azzal a korlátozással, hogy qubitmérések eredményei nem használhatók a programfolyamat szabályozásához. Pontosabban a típusértékek Result nem támogatják az egyenlőség összehasonlítását.

Ez a művelet például nem futtatható QIR Basetarget:

    operation FlipQubitOnZero() : Unit {
        use q = Qubit();
        if M(q) == Zero {
            X(q);
        }
    }

Ha egy adott műveleten QIR Basetargetpróbálja futtatni a műveletet, a művelet sikertelen lesz, mert egy mérési eredmény (M(q) == Zero) használatával végez összehasonlítást a számítási folyamat utasítással történő if vezérléséhez. Ugyanez vonatkozik a feltételes elágaztatás minden típusára, például elif és else utasításokra is.

Profil konfigurálása QIR Basetarget

A Visual Studio Code-ban:

  1. Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Az Azure Quantum QIR-profil targetbeállítása. Nyomja le az Enter billentyűt.
  2. Válassza ki a QIR-bázist.

A Pythonban a módszerrel állíthatja be a target profilt qsharp.init .

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

Támogatott targets

Jelenleg ezek QIR Basetargets érhetők el az Azure Quantumhoz:

Alkalmazások létrehozása és futtatása profilhoz QIR Adaptive RItargets

QIR Adaptive RI A profil targets számos Q#-alkalmazást futtathat, néhány korlátozással. Ez a profiltípus javulást feltételez a profilokkal szemben QIR Base , de továbbra is bizonyos korlátozások vonatkoznak rá.

QIR Adaptive RI a profil targets lehetővé teszi a mérésen alapuló feltételes műveleteket és a középső áramköri méréseket, ami azt jelenti, hogy a qubitek szelektíven mérhetők a kvantumprogram végső utasításától eltérő ponton, és a mérés kimenete más műveletekben is használható. A középkörök mérése lehetővé teszi több mérést a kvantumprogram bármely pontján. A mért qubitek kvantumadatai klasszikus állapotba (nulla vagy egy) összecsukhatók, de a nem mért qubitek a kvantumállapotukban maradnak.

Q#-ban qubit mérésekor a függvény egy típusértéket Result ad vissza. Ha ezt az eredményt feltételes utasításban szeretné használni, közvetlenül össze kell hasonlítani a feltételes utasításban. A megfelelő feltételes blokkok nem tartalmazhatnak return és set nem tartalmazhatnak utasításokat.

Például a következő Q#-kód engedélyezve lesz a QIR Adaptive RItargetkövetkezőben:

operation MeasureQubit(q : Qubit) : Result { 
    return M(q); 
}

operation SetToZero(q : Qubit) : Unit {
     if MeasureQubit(q) == One { X(q); }
}

Profil konfigurálása QIR Adaptive RItarget

A Visual Studio Code-ban:

  1. Válassza a Nézet –> Parancskatalógus lehetőséget, és írja be a Q#: Az Azure Quantum QIR-profil targetbeállítása. Nyomja le az Enter billentyűt.
  2. Válassza ki QIR Adaptive RI.

A Pythonban a módszerrel állíthatja be a target profilt qsharp.init .

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

Támogatott targets

Jelenleg ezek QIR Adaptive RItargets érhetők el az Azure Quantumhoz: