Skip to main content
IBM Quantum Platform

VF2PostLayout

class qiskit.transpiler.passes.VF2PostLayout(*args, **kwargs)

GitHub

Bases: AnalysisPass

Un pase para mejorar un Trazado existente tras la transpilación de un circuito a un grafo de Acoplamiento, como problema de isomorfismo de subgrafos, resuelto por VF2++.

A diferencia del VF2Layout que está diseñado para encontrar un diseño inicial para un circuito al principio del proceso de transpilación, este paso está diseñado para intentar encontrar un diseño mejor una vez completada la transpilación. La fase inicial de maquetación del transpilador no dispone de tanta información como después de la transpilación. Este pase está diseñado para ser emparejado en una tubería similar a la de los pases de diseño. En este paso se eliminarán todos los cables ociosos del circuito, se utilizará VF2 para encontrar un subgrafo en el grafo de acoplamiento para que el circuito funcione con mejor fidelidad y, a continuación, se actualizará el diseño del circuito para utilizar los nuevos qubits. El algoritmo utilizado en este pase se describe en arXiv:2209.15512.

Si se encuentra una solución, significa que existe un trazado de menor error disponible para el circuito. Si se encuentra una solución, la disposición se establecerá en el conjunto de propiedades como property_set['post_layout']. Sin embargo, si no se encuentra ninguna solución o ninguna solución mejor, no se fija property_set['post_layout'] . El motivo de parada se establece en property_set['VF2PostLayout_stop_reason'] en todos los casos y será uno de los valores enumerados en VF2PostLayoutStopReason que tiene los siguientes valores:

  • "solution found": Si se ha encontrado una solución.
  • "no better solution found": Si la disposición inicial del circuito es la mejor solución.
  • "nonexistent solution": Si no se ha encontrado ninguna solución.
  • ">2q gates in basis": Si VF2PostLayout no puede trabajar con la base del circuito.

Por defecto, esta pasada construirá un mapa de puntuación heurístico basado en los porcentajes de error en la dirección target. Sin embargo, se pueden ejecutar pases de análisis antes de este pase y establecer vf2_avg_error_map en el conjunto de propiedades con una instancia de ErrorMap . Si un valor es NaN que se trata como un borde ideal Por ejemplo, si un mapa de error se crea como:

from qiskit.transpiler.passes.layout.vf2_utils import ErrorMap

error_map = ErrorMap(3)
error_map.add_error((0, 0), 0.0024)
error_map.add_error((0, 1), 0.01)
error_map.add_error((1, 1), 0.0032)

que representa el mapa de errores para un objetivo de 2 qubits, donde la tasa de error media 1q es 0.0024 en el qubit 0 y 0.0032 en el qubit 1. Entonces la tasa de error media 2q para las puertas que operan en (0, 1) es 0.01 y (1, 0) no es compatible con el objetivo. Esto se utilizará para la puntuación si se establece como la clave vf2_avg_error_map en el conjunto de propiedades cuando VF2PostLayout se ejecuta.

Inicializar una instancia de pase VF2PostLayout

Parámetros

  • target (Target) – Un objetivo que representa el dispositivo backend en el que se ejecutará VF2PostLayout .
  • seed (int) – Establece la semilla del PRNG. -1 Significa que no hay barajado de nodos.
  • call_limit (int) – El número de visitas de estado a intentar en cada ejecución de VF2.
  • time_limit (float) – El límite de tiempo total en segundos para ejecutar VF2PostLayout
  • strict_direction (bool) – Si el paso está configurado para seguir la dirección estricta en el gráfico de acoplamiento. Si se establece en false, el pase tratará cualquier arista en el grafo de acoplamiento como una arista débil y el grafo de interacción será no dirigido. Para evaluar los diseños se utilizará la tasa de error media para cada qubit y enlace 2q. Esto permite ejecutar el pase antes de la traducción de la base y trabajar con cualquier operación de 1q y 2q. Sin embargo, si strict_direction=True el pase espera que el objeto de entrada DAGCircuit objeto run() esté en el conjunto de instrucciones de destino.
  • max_trials (int) – El número máximo de pruebas a realizar VF2 para encontrar un diseño. Un valor de 0 (por defecto) significa "ilimitado".

Eleva

TypeError - En tiempo de ejecución, si no se proporciona target .


Atributos

is_analysis_pass

Comprueba si el pase es un pase de análisis.

Si el pase es un AnalysisPass, significa que el pase puede analizar el DAG y escribir los resultados de ese análisis en el conjunto de propiedades. Este tipo de paso no permite realizar modificaciones en el DAG.

is_transformation_pass

Comprueba si el pase es un pase de transformación.

Si el pase es un TransformationPass, significa que el pase puede manipular el DAG, pero no puede modificar el conjunto de propiedades (pero se puede leer).


Métodos

execute

execute(passmanager_ir, state, callback=None)

GitHub

Ejecutar la tarea de optimización para la entrada Qiskit IR.

Parámetros

  • passmanager_ir (Any) – Qiskit IR para optimizar.
  • state (PassManagerState) – Estado asociado a la ejecución del flujo de trabajo por el propio gestor de pases.
  • callback (Callable | None) – Una función de devolución de llamada que se invoca cada vez que se ejecuta una tarea de optimización.

Devuelve

Qiskit IR optimizado y estado del flujo de trabajo.

Tipo de retorno

tupla [ Any, PassManagerState ]

name

name()

GitHub

Nombre del pase.

Tipo de retorno

str

run

run(dag)

GitHub

ejecutar el método de diseño

update_status

update_status(state, run_state)

GitHub

Actualizar el estado del flujo de trabajo.

Parámetros

  • state (PassManagerState) – Pasar estado de gestor a actualizar.
  • run_state (RunState) – Estado de finalización de la tarea actual.

Devuelve

Estado del gestor de pases actualizado.

Tipo de retorno

PassManagerState

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