Skip to main content
IBM Quantum Platform

UnitarySynthesis

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

GitHub

Bases: TransformationPass

Sintetiza las puertas en función de sus puertas base.

Sintetizar unitarios sobre algunas puertas base.

Este paso puede aproximar unitaries dadas algunas fidelidades de puerta (a través de target). Se puede forzar una mayor aproximación ajustando un dial heurístico approximation_degree.

Parámetros

  • basis_gates (list[str]) – Lista de nombres de puertas a las que apuntar. Si no se especifica, debe utilizarse el argumento target . Si se especifican tanto éste como target , se utilizará el valor de target y se ignorará éste.
  • approximation_degree (float) – dial heurístico utilizado para la aproximación de circuitos ( 1.0=no approximation, 0.0=maximal approximation). La aproximación puede abaratar el circuito sintetizado a costa de alejarse del unitario original. Si es Ninguno, la aproximación se realiza basándose en las fidelidades de puerta.
  • coupling_map (CouplingMap) – el mapa de acoplamiento del objetivo en caso de que la síntesis se realice en un circuito físico. La direccionalidad del mapa de acoplamiento se tendrá en cuenta si pulse_optimize es True/None y natural_direction es True/None.
  • pulse_optimize (bool) – Si se optimizan los pulsos durante la síntesis. Un valor de None lo intentará pero retrocederá si no lo consigue. Un valor de True provocará un error si la síntesis optimizada por pulsos no tiene éxito.
  • natural_direction (bool) – Si se aplica la síntesis considerando la direccionalidad de las puertas de 2 qubits. Sólo se aplica cuando pulse_optimize es True o None. La dirección natural se determina comprobando primero si el mapa de acoplamiento es unidireccional. Si no hay mapa de acoplamiento o el mapa de acoplamiento es bidireccional, se utilizará la dirección de puerta con la duración más corta desde las propiedades de destino. Si se establece en True, y no se puede determinar una dirección natural, plantea TranspilerError. Si se establece como Ninguno, no se lanzará ninguna excepción si no se puede determinar una dirección natural.
  • synth_gates (list[str]) – Lista de puertas a sintetizar. Si None y pulse_optimize es False o None, por defecto ['unitary']. Si None y pulse_optimize == True, por defecto ['unitary', 'swap']
  • method (str) – El método de síntesis unitaria plugin de usar.
  • min_qubits - El número mínimo de qubits en el unitario a sintetizar. Si se establece y el unitario es menor que el número especificado de qubits, no se sintetizará.
  • plugin_config - Argumentos de configuración adicionales opcionales (como dict) que se pasan directamente al plugin de síntesis unitaria especificado. Por defecto, esto no tendrá ningún efecto ya que el plugin por defecto no tiene argumentos adicionales. Consulte la documentación de su plugin de síntesis unitaria para saber cómo utilizarlo.
  • target - El valor opcional Target para el dispositivo de destino para el que se está compilando el pase. Si se especifica, esto sustituirá a los valores establecidos para basis_gates y coupling_map.
  • fallback_on_default : especifica si se debe utilizar el método de síntesis predeterminado en caso de que se especifique method una síntesis no predeterminada, pero no sea posible sintetizar la operación o el circuito sintetizado no se ajuste al objetivo.

Eleva

TranspilerError - si se especificó method pero no se encuentra en la lista de plugins instalados. La lista de plugins instalados puede consultarse con unitary_synthesis_plugin_names()


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

Ejecute el pase UnitarySynthesis en dag.

Parámetros

dag (DAGCircuit) – input dag.

Devuelve

Dag de salida con UnitaryGates sintetizado a la base objetivo.

Tipo de retorno

Circuito DAG

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.