Delen via


QIR-profieltypen target in Azure Quantum

In dit artikel worden de verschillende typen QIR-profieltypen target besproken die beschikbaar zijn in de kwantumcomputingproviders in Azure Quantum. De QIR-profieltypen target worden gebruikt om de mogelijkheden te definiëren van de kwantumapparaten die u met uw Q#-programma's kunt target gebruiken.

Target profielen en hun beperkingen

Kwantumapparaten zijn nog steeds een opkomende technologie en niet allemaal 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 target profielen:

  • Unrestricted: Dit profiel kan elk QIR-programma uitvoeren binnen de limieten van het geheugen voor simulators of het aantal qubits voor fysieke kwantumcomputers.
  • QIR base: Dit profiel kan elk Q#-programma uitvoeren waarvoor het gebruik van de resultaten van qubitmetingen niet nodig is om de programmastroom te beheren. Binnen een Q#-programma dat is gericht op dit type QPU, bieden waarden van het type Result geen ondersteuning voor gelijkheidsvergelijking.
  • QIR Adaptive RI: Dit profiel heeft beperkte mogelijkheden om de resultaten van qubitmetingen te gebruiken om de programmastroom te beheren. Binnen een Q#-programma dat is gericht op dit type QPU, kunt u waarden van het type Result vergelijken als onderdeel van voorwaarden in if bewerkingen, waardoor middelste circuitmeting mogelijk is.

Toepassingen voor Unrestrictedtarget profiel maken en uitvoeren

Unrestrictedtarget profielen kunnen elk programma uitvoeren, wat betekent dat u Q#-programma's kunt schrijven zonder functionaliteitsbeperkingen. Azure Quantum biedt target dit profiel niet. U kunt echter Q#-programma's uitvoeren Unrestricted op simulators die worden geleverd door de QDK.

Profiel configureren Unrestrictedtarget

In Visual Studio Code:

  1. Selecteer Weergave -> Opdrachtpalet en typ Q#: Stel het Azure Quantum QIR-profiel target in. Druk op Enter.
  2. Selecteer Onbeperkt.

In Python kunt u het target profiel instellen met behulp van de qsharp.init methode.

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

Toepassingen voor QIR Basetarget profiel maken en uitvoeren

QIR Basetarget profielen kunnen een groot aantal 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 QIR Basetarget:

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

Als u deze bewerking probeert uit te voeren op een QIR Basetarget, mislukt de bewerking omdat er een vergelijking wordt uitgevoerd met behulp van een meetresultaat (M(q) == Zero) om de rekenstroom met een if instructie te beheren. Hetzelfde geldt voor elk type voorwaardelijke vertakking, zoals elif en else instructies.

Profiel configureren QIR Basetarget

In Visual Studio Code:

  1. Selecteer Weergave -> Opdrachtpalet en typ Q#: Stel het Azure Quantum QIR-profiel target in. Druk op Enter.
  2. Selecteer QIR-basis.

In Python kunt u het target profiel instellen met behulp van de qsharp.init methode.

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

Ondersteund targets

QIR Basetargets Deze zijn momenteel beschikbaar voor Azure Quantum:

Toepassingen voor QIR Adaptive RI profiel maken en uitvoeren targets

QIR Adaptive RI het profiel targets kan een groot aantal Q#-toepassingen uitvoeren, met enkele beperkingen. Dit profieltype veronderstelt een verbetering ten opzichte QIR Base van profielen, maar is nog steeds onderhevig aan enkele beperkingen.

QIR Adaptive RI met profiel targets zijn op maat gebaseerde voorwaardelijke bewerkingen en gemiddelde circuitmetingen toegestaan, wat betekent dat qubits selectief kunnen worden gemeten op een ander punt dan de definitieve instructie 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 punt in het kwantumprogramma. De kwantumgegevens van de gemeten qubits worden samengevouwen tot een klassieke status (nul of één), maar de niet-gemeten qubits blijven in hun kwantumstatus.

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

De volgende Q#-code is bijvoorbeeld toegestaan in een QIR Adaptive RItarget:

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

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

Profiel configureren QIR Adaptive RItarget

In Visual Studio Code:

  1. Selecteer Weergave -> Opdrachtpalet en typ Q#: Stel het Azure Quantum QIR-profiel target in. Druk op Enter.
  2. Selecteer QIR Adaptive RI.

In Python kunt u het target profiel instellen met behulp van de qsharp.init methode.

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

Ondersteund targets

QIR Adaptive RItargets Deze zijn momenteel beschikbaar voor Azure Quantum: