Partager via


Types de profil QIR target dans Azure Quantum

Cet article décrit les différents types de profils QIR target disponibles dans les fournisseurs d’informatique quantique dans Azure Quantum. Les types de profil QIR target sont utilisés pour définir les fonctionnalités des appareils quantiques que vous pouvez target utiliser avec vos programmes Q#.

Target profils et leurs limitations

Les appareils quantiques sont encore une technologie émergente, et tous ne peuvent pas exécuter tout le code Q#. Par conséquent, vous devez garder à l’esprit certaines restrictions lors du développement de programmes pour différents targets. Actuellement, Azure Quantum et QDK gèrent trois profils différents target :

  • Unrestricted: ce profil peut exécuter n’importe quel programme QIR dans les limites de la mémoire pour les simulateurs ou le nombre de qubits pour les ordinateurs quantiques physiques.
  • QIR base: ce profil peut exécuter n’importe quel programme Q# qui ne nécessite pas l’utilisation des résultats des mesures qubits pour contrôler le flux du programme. Dans un programme Q# ciblé pour ce type de QPU, les valeurs de type Result ne prennent pas en charge la comparaison d’égalité.
  • QIR Adaptive RI: ce profil a une capacité limitée à utiliser les résultats des mesures qubit pour contrôler le flux du programme. Dans un programme Q# ciblé pour ce type de QPU, vous pouvez comparer les valeurs de type Result dans les conditions dans if les instructions dans les opérations, ce qui permet la mesure du circuit intermédiaire.

Créer et exécuter des applications pour Unrestrictedtarget le profil

Unrestrictedtarget les profils peuvent exécuter n’importe quel programme, ce qui signifie que vous pouvez écrire des programmes Q# sans restrictions de fonctionnalités. Azure Quantum ne fournit target aucun profil. Toutefois, vous pouvez exécuter Unrestricted des programmes Q# sur des simulateurs fournis par le QDK.

Configurer le Unrestrictedtarget profil

Dans Visual Studio Code :

  1. Sélectionnez Affichage -> Palette de commandes et type Q# : définissez le profil QIR target Azure Quantum. Appuyez sur Entrée.
  2. Sélectionnez Non restreint.

En Python, vous pouvez définir le target profil à l’aide de la qsharp.init méthode.

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

Créer et exécuter des applications pour QIR Basetarget le profil

QIR Basetarget les profils peuvent exécuter une grande variété d’applications Q#, avec la contrainte qu’ils ne peuvent pas utiliser de résultats de mesures qubit pour contrôler le flux du programme. Plus précisément, les valeurs de type Result ne prennent pas en charge la comparaison d’égalité.

Par exemple, cette opération ne peut pas être exécutée sur un QIR Basetarget:

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

Si vous essayez d’exécuter cette opération sur un QIR Basetarget, l’opération échoue car elle effectue une comparaison à l’aide d’un résultat de mesure (M(q) == Zero) pour contrôler le flux de calcul avec une if instruction. Il en va de même pour tout type de branchement conditionnel, tel que elif les instructions.else

Configurer le QIR Basetarget profil

Dans Visual Studio Code :

  1. Sélectionnez Affichage -> Palette de commandes et type Q# : définissez le profil QIR target Azure Quantum. Appuyez sur Entrée.
  2. Sélectionnez la base QIR.

En Python, vous pouvez définir le target profil à l’aide de la qsharp.init méthode.

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

Prise en charge de targets

Actuellement, ceux-ci QIR Basetargets sont disponibles pour Azure Quantum :

Créer et exécuter des applications pour QIR Adaptive RI le profil targets

QIR Adaptive RI le profil targets peut exécuter une grande variété d’applications Q#, avec certaines contraintes. Ce type de profil suppose une amélioration par rapport QIR Base aux profils, mais est toujours soumis à certaines limitations.

QIR Adaptive RI le profil targets permet d’effectuer des opérations conditionnelles basées sur des mesures et des mesures intermédiaires, ce qui signifie que les qubits peuvent être mesurés de manière sélective à un point autre que l’instruction finale d’un programme quantique, et que la sortie de la mesure peut être utilisée dans d’autres opérations. La mesure du circuit moyen permet de mesurer plusieurs mesures à tout moment dans le programme quantique. Les informations quantiques des qubits mesurés s’réduisent à un état classique (zéro ou un), mais les qubits non mesurés restent dans leur état quantique.

En Q# lors de la mesure d’un qubit, une valeur de type Result est retournée. Si vous souhaitez utiliser ce résultat dans une instruction conditionnelle, vous devez comparer directement dans l’instruction conditionnelle. Les blocs conditionnels correspondants ne peuvent pas contenir d’instructions return ou set.

Par exemple, le code Q# suivant est autorisé dans un QIR Adaptive RItarget:

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

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

Configurer le QIR Adaptive RItarget profil

Dans Visual Studio Code :

  1. Sélectionnez Affichage -> Palette de commandes et type Q# : définissez le profil QIR target Azure Quantum. Appuyez sur Entrée.
  2. Sélectionnez QIR Adaptive RI.

En Python, vous pouvez définir le target profil à l’aide de la qsharp.init méthode.

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

Prise en charge de targets

Actuellement, ceux-ci QIR Adaptive RItargets sont disponibles pour Azure Quantum :

  • Fournisseur : Quantinuum