Blog

L'optimisation des circuits quantiques est importante. Qu'est-ce qui la rend difficile ?

15
Juillet
,
2022

Pourquoi optimiser ?

L'optimisation des circuits quantiques permet d'extraire le maximum de valeur d'un matériel quantique donné. Il existe de nombreuses raisons pour lesquelles l'optimisation peut être importante pour un projet particulier. Par exemple :

  • L'optimisation qui réduit les ressources quantiques requises (par exemple, le nombre de qubits, le nombre de portes à deux qubits) peut permettre d'intégrer un problème plus important dans un ordinateur donné. Si votre organisation peut exécuter un circuit donné aujourd'hui, alors que votre concurrent doit attendre un an pour disposer d'un ordinateur quantique plus grand, votre organisation vient de gagner un avantage.
  • Les ordinateurs quantiques étant imparfaits, la création de circuits moins profonds pourrait accroître la précision des résultats.
  • Des circuits optimisés pourraient réduire le coût d'exécution sur les ordinateurs en nuage. Nous constatons souvent que les coûts d'exécution dépendent, par exemple, du nombre de portes multi-qubits, de sorte que la réduction de ce nombre permet de réduire les coûts.

Si l'optimisation est importante, comment pouvons-nous optimiser les circuits quantiques ?

Optimisation au niveau de la porte

Plusieurs optimisations utiles peuvent être effectuées au niveau de la porte. Elles sont réalisées par des transpileurs et d'autres outils qui reçoivent le code du langage d'assemblage quantique et l'améliorent pour un type particulier de matériel.

L'une de ces optimisations pourrait être l'échange de qubits. L'optimisation des permutations tient compte de la topologie particulière du matériel : quels qubits se trouvent l'un à côté de l'autre. Par exemple, si dans un circuit quantique donné, plusieurs opérations (par exemple CNOT) impliquent les qubits 4 et 5, mais qu'en réalité les qubits 2 et 5 sont mieux adaptés aux opérations à deux qubits, l'optimisation peut décider de permuter les qubits 4 et 2.

Un autre type d'optimisation peut consister à supprimer les opérations qui s'annulent l'une l'autre, comme deux portes de Hadamard ou deux portes X consécutives. Dans ce cas, l'optimisation pourrait ressembler à ce qui suit :

Il existe des versions plus sophistiquées. En voici un exemple :

Source : Brian Siegelwax post

Bien qu'utiles, les optimisations au niveau des portes sont limitées car, pour effectuer des optimisations plus sophistiquées, elles peuvent avoir besoin de comprendre l'intention du concepteur, ou essentiellement de procéder à une rétro-ingénierie automatique du circuit. Par exemple, si un transpileur peut être en mesure d'annuler deux portes de Hadamard consécutives, il peut ne pas être en mesure de détecter et d'annuler une QFT immédiatement suivie d'une QFT inverse. Il ne sera pas en mesure de proposer une implémentation alternative d'un additionneur ou de suggérer de meilleures façons d'utiliser des qubits supplémentaires s'ils sont disponibles. Un transpileur peut ne pas savoir que le concepteur souhaite minimiser la profondeur du circuit ou utiliser le nombre minimum de qubits possibles.

Que faire ? Examinez l'optimisation au niveau fonctionnel.

Optimisation au niveau du modèle fonctionnel

L'optimisation au niveau fonctionnel n'a pas besoin de "rétroconception" d'un circuit car elle considère la conception comme un ensemble de fonctions interconnectées. Elle génère ensuite un circuit basé sur ce que le concepteur définit comme ses objectifs d'optimisation. Un optimiseur à modèle fonctionnel pourrait faire beaucoup de choses qu'un optimiseur à niveau de porte ne peut pas faire. En voici quelques exemples :

Explorer d'autres possibilités de mise en œuvre des blocs fonctionnels

Lorsque vous pensez à un bloc fonctionnel tel qu'un additionneur quantique ou un bloc de préparation d'état, il peut y avoir plusieurs implémentations possibles pour un tel bloc. Par exemple, un additionneur peut être implémenté comme un additionneur QFT ou comme un additionneur ondulé. Un optimiseur au niveau du modèle fonctionnel peut choisir la meilleure en fonction des contraintes du système. Ce point concernant les contraintes au niveau du système est important. Bien qu'il puisse exister une implémentation optimale pour chaque bloc, il est parfois intéressant d'implémenter un bloc d'une manière apparemment moins efficace si cette manière profite à d'autres parties du système. Par exemple, le fait d'utiliser moins de qubits peut libérer ces ressources pour un autre bloc qui peut être exécuté en parallèle.

Utiliser plus ou moins de qubits auxiliaires

Imaginez une porte MCX (multi-controlled Toffoli). Il existe de nombreuses façons de la mettre en œuvre lorsqu'on dispose de plus ou moins de qubits auxiliaires. Voir cette discussion à titre d'exemple. Un optimiseur de niveau fonctionnel peut choisir la bonne implémentation en fonction de la meilleure allocation des ressources du système.

Par ailleurs, le concours de codage Classiq a démontré qu'il existait de nombreuses façons différentes d' implémenter les portes MCX.

‍Réutiliser lesqubits si nécessaire

Un optimiseur de modèle fonctionnel comprend les entrées et les sorties de chaque bloc fonctionnel et fait la distinction entre les qubits de sortie qui portent la sortie et les qubits auxiliaires qui peuvent être non calculés et réutilisés. Par exemple, si la fonction F a deux sorties utiles et un qubit auxiliaire, ce dernier peut être réutilisé. La version "A" ci-dessous utilise neuf qubits au total pour trois instances de la fonction F, mais lorsque huit seulement sont disponibles (version "B"), le qubit auxiliaire de la deuxième instance est réutilisé. Dans la version "C", il y a encore moins de qubits, et nous voyons donc une utilisation en cascade des qubits auxiliaires. Ce phénomène serait extrêmement difficile à détecter et à mettre en œuvre si l'on utilisait un modèle au niveau de la porte.

‍Modifier l'ordre des opérations commutatives

La version "A" ci-dessous présente quatre termes hamiltoniens. La version "B" l'optimise en commuant leur ordre. Le fait de comprendre qu'il s'agit d'un hamiltonien permet à un modèle fonctionnel d'effectuer une telle optimisation. BTW, voici de nombreux autres exemples d'optimisation de problèmes d'exponentiation hamiltonienne.

Résumé

Il ne s'agit là que de quelques exemples parmi d'autres. D'autres exemples pourraient inclure la modification du circuit en fonction du modèle de bruit de la plate-forme cible, de la précision souhaitée ou de nombreuses autres variations.

Sur la base de ces éléments et de bien d'autres, je pense qu'il est juste de dire que

il est évident que l'optimisation à des niveaux d'abstraction plus élevés [par exemple au niveau fonctionnel] est mathématiquement supérieure à l'optimisation à des niveaux inférieurs.

En bref : l'optimisation est importante. Une optimisation de qualité est très difficile à réaliser au niveau du portail, mais elle n'est plus difficile lorsque vous travaillez au niveau fonctionnel et que vous utilisez la bonne plateforme.

Pour voir comment la plateforme Classiq vous aide à créer facilement des circuits optimisés et adaptés au matériel, planifiez une démonstration avec nous.

Pourquoi optimiser ?

L'optimisation des circuits quantiques permet d'extraire le maximum de valeur d'un matériel quantique donné. Il existe de nombreuses raisons pour lesquelles l'optimisation peut être importante pour un projet particulier. Par exemple :

  • L'optimisation qui réduit les ressources quantiques requises (par exemple, le nombre de qubits, le nombre de portes à deux qubits) peut permettre d'intégrer un problème plus important dans un ordinateur donné. Si votre organisation peut exécuter un circuit donné aujourd'hui, alors que votre concurrent doit attendre un an pour disposer d'un ordinateur quantique plus grand, votre organisation vient de gagner un avantage.
  • Les ordinateurs quantiques étant imparfaits, la création de circuits moins profonds pourrait accroître la précision des résultats.
  • Des circuits optimisés pourraient réduire le coût d'exécution sur les ordinateurs en nuage. Nous constatons souvent que les coûts d'exécution dépendent, par exemple, du nombre de portes multi-qubits, de sorte que la réduction de ce nombre permet de réduire les coûts.

Si l'optimisation est importante, comment pouvons-nous optimiser les circuits quantiques ?

Optimisation au niveau de la porte

Plusieurs optimisations utiles peuvent être effectuées au niveau de la porte. Elles sont réalisées par des transpileurs et d'autres outils qui reçoivent le code du langage d'assemblage quantique et l'améliorent pour un type particulier de matériel.

L'une de ces optimisations pourrait être l'échange de qubits. L'optimisation des permutations tient compte de la topologie particulière du matériel : quels qubits se trouvent l'un à côté de l'autre. Par exemple, si dans un circuit quantique donné, plusieurs opérations (par exemple CNOT) impliquent les qubits 4 et 5, mais qu'en réalité les qubits 2 et 5 sont mieux adaptés aux opérations à deux qubits, l'optimisation peut décider de permuter les qubits 4 et 2.

Un autre type d'optimisation peut consister à supprimer les opérations qui s'annulent l'une l'autre, comme deux portes de Hadamard ou deux portes X consécutives. Dans ce cas, l'optimisation pourrait ressembler à ce qui suit :

Il existe des versions plus sophistiquées. En voici un exemple :

Source : Brian Siegelwax post

Bien qu'utiles, les optimisations au niveau des portes sont limitées car, pour effectuer des optimisations plus sophistiquées, elles peuvent avoir besoin de comprendre l'intention du concepteur, ou essentiellement de procéder à une rétro-ingénierie automatique du circuit. Par exemple, si un transpileur peut être en mesure d'annuler deux portes de Hadamard consécutives, il peut ne pas être en mesure de détecter et d'annuler une QFT immédiatement suivie d'une QFT inverse. Il ne sera pas en mesure de proposer une implémentation alternative d'un additionneur ou de suggérer de meilleures façons d'utiliser des qubits supplémentaires s'ils sont disponibles. Un transpileur peut ne pas savoir que le concepteur souhaite minimiser la profondeur du circuit ou utiliser le nombre minimum de qubits possibles.

Que faire ? Examinez l'optimisation au niveau fonctionnel.

Optimisation au niveau du modèle fonctionnel

L'optimisation au niveau fonctionnel n'a pas besoin de "rétroconception" d'un circuit car elle considère la conception comme un ensemble de fonctions interconnectées. Elle génère ensuite un circuit basé sur ce que le concepteur définit comme ses objectifs d'optimisation. Un optimiseur à modèle fonctionnel pourrait faire beaucoup de choses qu'un optimiseur à niveau de porte ne peut pas faire. En voici quelques exemples :

Explorer d'autres possibilités de mise en œuvre des blocs fonctionnels

Lorsque vous pensez à un bloc fonctionnel tel qu'un additionneur quantique ou un bloc de préparation d'état, il peut y avoir plusieurs implémentations possibles pour un tel bloc. Par exemple, un additionneur peut être implémenté comme un additionneur QFT ou comme un additionneur ondulé. Un optimiseur au niveau du modèle fonctionnel peut choisir la meilleure en fonction des contraintes du système. Ce point concernant les contraintes au niveau du système est important. Bien qu'il puisse exister une implémentation optimale pour chaque bloc, il est parfois intéressant d'implémenter un bloc d'une manière apparemment moins efficace si cette manière profite à d'autres parties du système. Par exemple, le fait d'utiliser moins de qubits peut libérer ces ressources pour un autre bloc qui peut être exécuté en parallèle.

Utiliser plus ou moins de qubits auxiliaires

Imaginez une porte MCX (multi-controlled Toffoli). Il existe de nombreuses façons de la mettre en œuvre lorsqu'on dispose de plus ou moins de qubits auxiliaires. Voir cette discussion à titre d'exemple. Un optimiseur de niveau fonctionnel peut choisir la bonne implémentation en fonction de la meilleure allocation des ressources du système.

Par ailleurs, le concours de codage Classiq a démontré qu'il existait de nombreuses façons différentes d' implémenter les portes MCX.

‍Réutiliser lesqubits si nécessaire

Un optimiseur de modèle fonctionnel comprend les entrées et les sorties de chaque bloc fonctionnel et fait la distinction entre les qubits de sortie qui portent la sortie et les qubits auxiliaires qui peuvent être non calculés et réutilisés. Par exemple, si la fonction F a deux sorties utiles et un qubit auxiliaire, ce dernier peut être réutilisé. La version "A" ci-dessous utilise neuf qubits au total pour trois instances de la fonction F, mais lorsque huit seulement sont disponibles (version "B"), le qubit auxiliaire de la deuxième instance est réutilisé. Dans la version "C", il y a encore moins de qubits, et nous voyons donc une utilisation en cascade des qubits auxiliaires. Ce phénomène serait extrêmement difficile à détecter et à mettre en œuvre si l'on utilisait un modèle au niveau de la porte.

‍Modifier l'ordre des opérations commutatives

La version "A" ci-dessous présente quatre termes hamiltoniens. La version "B" l'optimise en commuant leur ordre. Le fait de comprendre qu'il s'agit d'un hamiltonien permet à un modèle fonctionnel d'effectuer une telle optimisation. BTW, voici de nombreux autres exemples d'optimisation de problèmes d'exponentiation hamiltonienne.

Résumé

Il ne s'agit là que de quelques exemples parmi d'autres. D'autres exemples pourraient inclure la modification du circuit en fonction du modèle de bruit de la plate-forme cible, de la précision souhaitée ou de nombreuses autres variations.

Sur la base de ces éléments et de bien d'autres, je pense qu'il est juste de dire que

il est évident que l'optimisation à des niveaux d'abstraction plus élevés [par exemple au niveau fonctionnel] est mathématiquement supérieure à l'optimisation à des niveaux inférieurs.

En bref : l'optimisation est importante. Une optimisation de qualité est très difficile à réaliser au niveau du portail, mais elle n'est plus difficile lorsque vous travaillez au niveau fonctionnel et que vous utilisez la bonne plateforme.

Pour voir comment la plateforme Classiq vous aide à créer facilement des circuits optimisés et adaptés au matériel, planifiez une démonstration avec nous.

A propos de "The Qubit Guy's Podcast" (Le podcast du gars de Qubit)

Animé par The Qubit Guy (Yuval Boger, notre directeur marketing), le podcast accueille des leaders d'opinion de l'informatique quantique pour discuter de questions commerciales et techniques qui ont un impact sur l'écosystème de l'informatique quantique. Nos invités fournissent des informations intéressantes sur les logiciels et algorithmes d'ordinateurs quantiques, le matériel informatique quantique, les applications clés de l'informatique quantique, les études de marché de l'industrie quantique et bien plus encore.

Si vous souhaitez proposer un invité pour le podcast, veuillez nous contacter.

Créez des logiciels quantiques sans contraintes

contactez-nous