Skip to main content
IBM Quantum Platform

Transpileur


Présentation

La transpilation est le processus consistant à réécrire un circuit d'entrée donné afin de le rendre conforme à des critères souhaités, tels que les contraintes topologiques et opérationnelles du matériel utilisé pour l'exécution du circuit final. Nous n'allons pas approfondir ce sujet ici; nous vous renvoyons plutôt à la documentation de Qiskit concernant ce module qiskit.transpiler .

L'objectif ici est d'expliquer comment nous procédons à la transpilation d'un vers FermionicCircuit un QuantumCircuit.


Etapes

D'un point de vue conceptuel, nous divisons le processus de transpilation en plusieurs étapes :

Etape
Description
Entréeconvertir en structure de données DAG
Optimisationoptimisation au niveau des fermions
PrésentationDisposition des fermions vers les qubits
Synthèsesynthèse de fermions en qubits
Qubitpoursuite de la transpilation au niveau des qubits
sortieconvertir à partir de la structure de données DAG

Entrée

Les différentes étapes du transpileur sont conçues pour fonctionner avec FermionicDAGCircuit comme structure de données sous-jacente permettant de stocker les opérations du circuit. Ces graphes acycliques orientés (DAG) constituent un modèle de données efficace pour la traversée et la manipulation des circuits.

Cependant, un utilisateur final est plus susceptible d'utiliser un FermionicCircuit car celui-ci offre une interface et un modèle de données plus intuitifs. Ainsi, cet étage d'entrée se contente d'exécuter la passe de transpilation FermionicCircuitToDAG .

Optimisation

Cette étape du pipeline de transpilation permet de mettre en œuvre des optimisations du circuit tout en conservant le type de ce dernier en tant qu'instance de FermionicDAGCircuit. De ce fait, aucune information relative aux qubits n'est requise (ni nécessairement disponible) à ce stade du processus de transpilation.

Présentation

L'un des paramètres de configuration globaux du processus de transpilation est la « disposition » des fermions en qubits. Cette information doit être fournie par l'utilisateur et doit correspondre à la correspondance fermion-qubit indiquée (en ce sens que, si la correspondance choisie code un nombre fixe de fermions à l'aide d'un nombre différent de qubits, la configuration doit en tenir compte).

En règle générale, les modes fermioniques ne sont pas toujours codés dans le registre de qubits à l'aide d'une base d'occupation. Par conséquent, il n'est pas possible d'associer un mode fermionique unique à un qubit unique. Par conséquent, la configuration « fermions vers qubits » fournie par l'utilisateur (F2QLayout) associe FermionicRegister instances à QuantumRegister qubits.

Chronique « 1 »
Chronique « 2 »
F2QLayoutUne mise en correspondance entre les registres de modes fermioniques et les registres quantiques.

Pour configurer ce paramètre global, il suffit d'insérer une instance F2QLayout dans le champ f2q_layout du fichier property_set. Pour plus de détails, consultez la section « Passes de mise en page ».

Synthèse

Fondamentalement, la transpilation est gérée par le passage de transpilation F2QSynthesis . Ce concept est similaire à celui du « pass HighLevelSynthesis » de Qiskit, qui utilise divers plugins pour transcompiler des instructions de circuit de haut niveau. Pour plus d'informations, consultez directement F2QSynthesis la documentation.

La manière dont un état donné peut FermionicGate être synthétisé à l'aide d'opérations basées sur des qubits dépendra du type de porte utilisé ainsi que de la correspondance fermion-qubit choisie par l'utilisateur. Pour plus d'informations, consultez la section « Plug-ins de passe de transpileur ».

Qubit

À ce stade du processus de transpilation, nous sommes parvenus à une instance DAGCircuit et pouvons continuer à utiliser le pipeline de transpilation de Qiskit comme d’habitude.

Conseil

D'autres passes du transpiler destinées à des optimisations au niveau des qubits, qui tiennent compte des informations sur un circuit provenant d'un [...], FermionicCircuit pourraient être ajoutées à l'avenir!

Sortie

Cette étape met en œuvre, en substance, l'opération inverse de « Input », en appelant la passe de transpilation QuantumDAGToCircuit .


Gestionnaires de forfaits

Toutes les étapes ci-dessus correspondent aux étapes par défaut définies par la manière dont les différents éléments sont coordonnés presetsMultiStagePassManager .

Les étapes individuelles peuvent correspondre soit à un passage unique (lorsqu’elles passent d’une représentation interne (IR) à une autre, comme les étapes « Entrée », « Synthèse » et « Sortie » ci-dessus), soit à une étape BasePassManager dont les passages internes peuvent être modifiés.

Pour les étapes s'exécutant sur des circuits fermioniques ( Optimisation et Disposition ), le type de gestionnaire de passes à utiliser est FermionicPassManager.

Chronique « 1 »
Chronique « 2 »
FermionicPassManager( [tâches, max_itérations] )Un gestionnaire de passes de transpilateur permettant de convertir l’un FermionicCircuit en l’autre.

Pass de conversion

Ce module propose directement quelques opérations de conversion très simples :

Préréglages

Pour faciliter la tâche des utilisateurs, le qiskit_fermions.transpiler.presets module propose plusieurs fonctions permettant de créer rapidement des pipelines de transpilation prédéfinis.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.