Célprofil-típusok az Azure Quantumban

Ez a cikk az Azure Quantum kvantum-számítástechnikai szolgáltatóiban elérhető különböző target profiltípusokat ismerteti. Jelenleg a terület korai fejlesztési fázisa miatt a kvantumeszközök bizonyos korlátozásokkal és követelményekkel rendelkeznek a rajtuk futó programokra vonatkozóan.

Kvantumfeldolgozó egységek (QPU): különböző profilok és azok korlátai

A kvantumfeldolgozó egység (QPU) egy fizikai vagy szimulált processzor, amely számos összekapcsolt qubitet tartalmaz, amelyek kvantum-algoritmusok kiszámításához kezelhetők. Ez egy kvantumszámítógép vagy kvantumszimulátor központi összetevője.

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ő profilt kezel a QPU-khoz:

  • Full: Ez a profil bármilyen Q#-programot futtathat a szimulátorok memóriakorlátja vagy a fizikai kvantumszámítógépek qubitjeinek számán belül.
  • No Control Flow: Ez a profil bármely olyan Q#-programot futtathat, amely nem követeli meg a qubitmérések eredményeinek használatát a programfolyamat szabályozásához. Az ilyen típusú QPU-khoz készült Q#-programokban targeta típusértékek Result nem támogatják az egyenlőség összehasonlítását.
  • Basic Measurement Feedback: 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-khoz készült Q#-programokban targetösszehasonlíthatja a típusértékeket Result a műveleti utasításokban szereplő if feltételek részeként, így lehetővé téve a közép áramköri mérést. Előfordulhat, hogy a megfelelő feltételes blokkok nem tartalmaznak return vagy set utasításokat.

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

Full a profil targets bármilyen Q#-programot futtathat, ami azt jelenti, hogy a programokat funkciókorlátozások nélkül is megírhatja. Az Azure Quantum még nem biztosít ilyen target profilt.

Alkalmazások létrehozása és futtatása profilhoz No Control Flowtargets

No Control Flow a profil targets számos Q#-alkalmazást futtathat, azzal a korlátozással, hogy nem használhatják a qubitmérések eredményeit 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ó a következőn No Control Flowtarget:

    operation SetQubitState(desired : Result, q : Qubit) : Result {
        if (desired != M(q)) {
            X(q);
        }
    }

A művelet No Control Flowtarget futtatása sikertelen lesz, mert két eredmény (desired != M(q)) összehasonlítását értékeli ki a számítási folyamat utasítással if való vezérléséhez. Ez bármilyen típusú feltételes elágaztatásra, például elif és else utasításra alkalmazható.

Megjegyzés

Jelenleg nem küldhet be olyan kvantumprogramokat, amelyek a () értéken No Control Flowtargetsmért qubiteken hajtanak végre műveleteket, még akkor sem, ha nem használja az eredményeket a programfolyamat szabályozására. No Control Flowtargets Vagyis ne engedélyezze a közép áramköri méréseket.

A következő kód például nem futtatható a következőn No Control Flowtarget:

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

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

Jelenleg ezek No Control Flowtargets érhetők el az Azure Quantum-hoz:

Alkalmazások létrehozása és futtatása profilhoz Basic Measurement Feedbacktargets

Basic Measurement Feedback a profil targets számos Q#-alkalmazást futtathat, és a megkötés szerint a típusértékeket Result csak a műveletekben szereplő feltételek if részeként lehet összehasonlítani. Ez a profiltípus javulást feltételez a profilokkal szemben No Control Flow , de bizonyos korlátozások továbbra is fennállnak.

Basic Measurement Feedback a profil targets lehetővé teszi a mérésalapú feltételes műveleteket és a közép á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épáramkör-mérés több mérést is lehetővé tesz a kvantumprogram bármely pontján. A mért qubitek kvantuminformációi klasszikus állapotba (nulla vagy egy) összecsukhatók, de a nem mért qubitek megőrzik a kvantumállapotukat.

A 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 vagy set utasításokat.

Például a következő Q#-kód engedélyezve lesz a Basic Measurement Feedbacktargetkövetkezőben:

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

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

Az áthelyezett logikai kiértékeléssel rendelkező kód azonban nem engedélyezett:

operation BeOne(q : Qubit) : Bool {
     return M(q) == One;
}

operation SetToZeroUsingBeOne(q : Qubit) : Unit {
     if BeOne(q) { X(q); }
}

A SetQubitState benne lévő No Control Flow művelet mindaddig használhatótargetBasic Measurement Feedback, amíg nem tartalmaz utasítást return vagy set utasítást a if utasításban. Ez bármilyen típusú feltételes elágaztatásra, például elif és else utasításra alkalmazható. A következő művelet például nem használható a következőben Basic Measurement Feedbacktarget:

    operation SetQubitState(desired : Result, q : Qubit) : Result {
    if desired != M(q) {
        X(q);
        return M(q);
    }
}

Jelenleg ezek Basic Measurement Feedbacktargets érhetők el az Azure Quantum-hoz: