Skip to main content
IBM Quantum Platform

Transpilador


Visión general

La transpilación es el proceso de reescribir un circuito de entrada determinado para que se ajuste a los criterios deseados, tales como las restricciones topológicas y operativas del hardware utilizado para ejecutar el circuito final. No vamos a explicarlo con más detalle aquí, sino que nos remitimos a la documentación de Qiskit sobre el módulo qiskit.transpiler .

En este caso, el objetivo es explicar cómo llevamos a cabo la transpilación de un FermionicCircuit a un QuantumCircuit.


Etapas

Desde un punto de vista conceptual, dividimos el proceso de transpilación en varias etapas:

Etapa
Descripción
Entradaconvertir a la estructura de datos DAG
Optimizaciónoptimización a nivel fermiónico
DiseñoDiseño de la conversión de fermiones a qubits
Síntesissíntesis de fermiones a qubits
Qubittranspilación continua a nivel de qubit
outputconvertir a partir de la estructura de datos DAG

Entrada

Las distintas pasadas del transpilador están implementadas para funcionar con FermionicDAGCircuit como estructura de datos subyacente en la que se almacenan las operaciones del circuito. Estos grafos acíclicos dirigidos (DAG) proporcionan un modelo de datos eficaz para el recorrido y la manipulación de circuitos.

Sin embargo, es más probable que un usuario final trabaje con un, FermionicCircuit ya que ofrece una interfaz y un modelo de datos más intuitivos. Por lo tanto, esta etapa de entrada se limita a ejecutar la pasada del transpilador FermionicCircuitToDAG .

Optimización

Esta etapa del proceso de transpilación puede aplicar optimizaciones al circuito, conservando al mismo tiempo el tipo del circuito como una instancia de FermionicDAGCircuit. Por lo tanto, en esta fase del proceso de transpilación no se requiere (ni se dispone necesariamente de) información sobre los qubits.

Diseño

Un parámetro de configuración global para el proceso de transpilación es la «disposición» de fermiones a qubits. El usuario debe proporcionar esta información, que debe coincidir con la correspondencia entre fermiones y qubits especificada (en el sentido de que, si la correspondencia elegida codifica un número fijo de fermiones con un número diferente de qubits, la disposición configurada debe tenerlo en cuenta).

En general, los modos fermiónicos no siempre se codifican en el registro de qubits mediante una base de ocupación. Por consiguiente, no podemos asociar un único modo fermiónico a un único qubit. Por lo tanto, la disposición de fermiones a qubits proporcionada por el usuario (F2QLayout) asocia FermionicRegister instancias con unidades QuantumRegister .

Columna « 1 »
Columna « 2 »
F2QLayoutUna correspondencia entre los registros de modos fermiónicos y los registros cuánticos.

Para configurar este parámetro global, hay que introducir una instancia F2QLayout en el f2q_layout campo del property_set. Para obtener más información, consulta la sección «Pasos de maquetación ».

Síntesis

En esencia, la transpilación se gestiona mediante la fase del transpilador F2QSynthesis . Es conceptualmente similar al HighLevelSynthesis «pass» de Qiskit, que utiliza diversos complementos para transpilar instrucciones de circuitos de alto nivel. Para obtener más información, consulta directamente F2QSynthesis la documentación.

La forma en que un dato determinado FermionicGate pueda sintetizarse mediante operaciones basadas en qubits dependerá del tipo concreto de puerta, así como de la correspondencia entre fermiones y qubits elegida por el usuario. Para obtener más información, consulta «Síntesis de la pasada del transpilador ( F2Q ) ».

Qubit

En este punto del proceso de transpilación, hemos llegado a una instancia DAGCircuit y podemos seguir utilizando el proceso de transpilación de Qiskit como se haría habitualmente.

Sugerencia

¡En el futuro podrían FermionicCircuit añadirse pases adicionales del transpilador para realizar optimizaciones a nivel de qubit que tengan en cuenta la información sobre un circuito procedente de un!

Resultado

Esta etapa implementa, en la práctica, el proceso inverso al de «Input», mediante la llamada a la fase del transpilador QuantumDAGToCircuit .


Gestores de pases

Todas las etapas anteriores son las etapas predeterminadas según la forma en que se coordinan presets las distintas MultiStagePassManager.

Las etapas individuales pueden consistir en una sola pasada (cuando pasan de una representación interna (IR) a otra, como las etapas de Entrada, Síntesis y Salida mencionadas anteriormente) o bien una etapa puede ser una BasePassManager cuya estructura interna se pueda modificar.

En las etapas que se ejecutan en circuitos fermiónicos ( Optimización y Diseño ), el tipo de «passmanager» que se debe utilizar es FermionicPassManager.

Columna « 1 »
Columna « 2 »
FermionicPassManager( [tareas, max_iteration] )Un gestor de pasadas del transpilador que convierte una cosa FermionicCircuit en otra.

Pases de conversión

Este módulo ofrece directamente algunas operaciones de conversión muy básicas:

Preajustes

Para facilitar el trabajo del usuario, el qiskit_fermions.transpiler.presets módulo ofrece una serie de funciones que permiten crear rápidamente flujos de trabajo de transpilación predefinidos.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.