Share via


Doelprofieltypen in Azure Quantum

In dit artikel worden de verschillende typen target profieltypen besproken die beschikbaar zijn in de kwantumcomputingproviders in Azure Quantum. Vanwege de vroege ontwikkelingsfase van het veld hebben kwantumapparaten op dit moment enkele beperkingen en vereisten voor programma's die erop worden uitgevoerd.

Kwantumverwerkingseenheden (QPU): verschillende profielen en hun beperkingen

Een Quantum Processing Unit (QPU) is een fysieke of gesimuleerde processor die een aantal onderling verbonden qubits bevat die kunnen worden bewerkt om kwantumalgoritmen te berekenen. Het is het centrale onderdeel van een kwantumcomputer of kwantumsimulator.

Kwantumapparaten zijn nog steeds een opkomende technologie en niet alle apparaten kunnen alle Q#-code uitvoeren. Daarom moet u rekening houden met enkele beperkingen bij het ontwikkelen van programma's voor verschillende targets. Momenteel beheren Azure Quantum en de QDK drie verschillende profielen voor QPU's:

  • Full: Met dit profiel kan elk Q#-programma worden uitgevoerd binnen de geheugenlimieten voor simulators of het aantal qubits voor fysieke kwantumcomputers.
  • No Control Flow: met dit profiel kan elk Q#-programma worden uitgevoerd waarvoor het gebruik van de resultaten van qubitmetingen niet nodig is om de programmastroom te beheren. Binnen een Q#-programma targetdat voor dit soort QPU's is gebruikt, bieden waarden van het type Result geen ondersteuning voor gelijkheidsvergelijking.
  • Basic Measurement Feedback: dit profiel heeft beperkte mogelijkheden om de resultaten van qubitmetingen te gebruiken om de programmastroom te beheren. In een Q#-programma targetvoor dit type QPU kunt u waarden van het type Result vergelijken als onderdeel van voorwaarden in if instructies in bewerkingen, waardoor metingen in het middencircuit mogelijk zijn. De bijbehorende voorwaardelijke blokken bevatten return mogelijk geen of-instructies set .

Toepassingen voor Full profiel maken en uitvoeren targets

Full -profiel targets kan elk Q#-programma uitvoeren, wat betekent dat u programma's kunt schrijven zonder functionaliteitsbeperkingen. Azure Quantum biedt nog geen profiel target met dit profiel.

Toepassingen voor No Control Flow profiel maken en uitvoeren targets

No Control Flow -profiel targets kan een breed scala aan Q#-toepassingen uitvoeren, met de beperking dat ze geen resultaten van qubitmetingen kunnen gebruiken om de programmastroom te beheren. Meer specifiek bieden waarden van het type Result geen ondersteuning voor gelijkheidsvergelijking.

Deze bewerking kan bijvoorbeeld niet worden uitgevoerd op een No Control Flowtarget:

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

Het uitvoeren van deze bewerking op een No Control Flowtarget mislukt omdat er een vergelijking tussen twee resultaten (desired != M(q)) wordt geëvalueerd om de berekeningsstroom te beheren met een if -instructie. Dit is van toepassing op elk type voorwaardelijke vertakking, zoals elif en-instructies else .

Notitie

Op dit moment kunt u geen kwantumprogramma's indienen die bewerkingen toepassen op qubits die zijn gemeten in No Control Flowtargets, zelfs niet als u de resultaten niet gebruikt om de programmastroom te beheren. Dat wil gezegd, No Control Flowtargets sta geen metingen in het middencircuit toe.

De volgende code kan bijvoorbeeld niet worden uitgevoerd op een No Control Flowtarget:

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

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

Op dit moment zijn deze No Control Flowtargets beschikbaar voor Azure Quantum:

Toepassingen voor Basic Measurement Feedback profiel maken en uitvoeren targets

Basic Measurement Feedback profiel targets kan een breed scala aan Q#-toepassingen uitvoeren, met de beperking dat u alleen waarden van het type Result kunt vergelijken als onderdeel van voorwaarden binnen if instructies in bewerkingen. Dit profieltype veronderstelt een verbetering ten opzichte No Control Flow van profielen, maar is nog steeds onderhevig aan enkele beperkingen.

Basic Measurement Feedback profiel targets maakt voorwaardelijke bewerkingen op basis van metingen op basis van metingen en middencircuits mogelijk, wat betekent dat qubits selectief kunnen worden gemeten op een ander punt dan de eindinstructie van een kwantumprogramma, en dat de uitvoer van de meting kan worden gebruikt in andere bewerkingen. Metingen in het middencircuit maken meerdere metingen mogelijk op elk gewenst punt in het kwantumprogramma. De kwantumgegevens van de gemeten qubits worden samengevouwen tot een klassieke toestand (nul of één), maar de niet-gemeten qubits behouden hun kwantumstatus.

In Q# wordt bij het meten van een qubit een waarde van het type Result geretourneerd. Als u dit resultaat wilt gebruiken in een voorwaardelijke instructie, moet u rechtstreeks vergelijken in de voorwaardelijke instructie. De bijbehorende voorwaardelijke blokken bevatten return mogelijk geen of-instructies set .

De volgende Q#-code is bijvoorbeeld toegestaan in een Basic Measurement Feedbacktarget:

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

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

Dezelfde code met de booleaanse evaluatie die is verplaatst, is echter niet toegestaan:

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

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

De SetQubitState bewerking in No Control Flow kan worden gebruikt in een Basic Measurement Feedbacktarget zolang u geen of set -instructie in de if -instructie opneemtreturn. Dit is van toepassing op elk type voorwaardelijke vertakking, zoals elif en-instructies else . De volgende bewerking kan bijvoorbeeld niet worden gebruikt in een Basic Measurement Feedbacktarget:

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

Op dit moment zijn deze Basic Measurement Feedbacktargets beschikbaar voor Azure Quantum: