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.

Esta pasada es multihilo cuando se utiliza el complemento de síntesis predeterminado y, por defecto, podría iniciar un grupo de subprocesos con un número de subprocesos igual al número de CPU. Puedes ajustar el número de subprocesos mediante la RAYON_NUM_THREADS variable de entorno. Por ejemplo, si se establece RAYON_NUM_THREADS=4 este valor, el grupo de subprocesos se limitaría a 4 subprocesos.

Parámetros

  • basis_gates – Lista de nombres de puertas a las que dirigirse. Si no se especifica, se debe utilizar el target argumento. Si se especifican tanto esto como el target , se utilizará el valor de target y este se ignorará.
  • approximation_degree – Dial heurístico utilizado para la aproximación de circuitos (aproximación de 1.0=no, aproximación de 0.0=maximal ). La aproximación puede abaratar el coste del circuito sintetizado, a costa de alejarse del circuito unitario original. NoneEn ese caso, la aproximación se realiza basándose en las fidelidades de las puertas.
  • coupling_map – El mapa de acoplamiento del objetivo en caso de que la síntesis se realice en un circuito físico. Se tendrá en cuenta la direccionalidad del mapa de acoplamiento si pulse_optimize es True/None y natural_direction es True/None.
  • pulse_optimize – Indica si se deben optimizar los pulsos durante la síntesis. Si se establece un valor de None , se intentará llevarlo a cabo, pero se recurrirá a una alternativa si no se consigue. Un valor de True provocará un error si la síntesis optimizada por impulsos no se lleva a cabo con éxito.
  • natural_direction – Indica si se debe aplicar la síntesis teniendo en cuenta la direccionalidad de las puertas de 2 qubits. Solo 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 un mapa de acoplamiento o si este es bidireccional, se utilizará la dirección de la puerta con menor duración según las propiedades de destino. Si se establece en «True» y no se puede determinar una dirección natural, se produce un TranspilerError. Si se establece en «None», no se generará ninguna excepción si no se puede determinar una dirección natural.
  • synth_gates – Lista de puertas que se van a sintetizar. ['unitary']Si es «None» y pulse_optimize es «False» o «None», se utilizará por defecto. Si None y pulse_optimize == True, se establece por defecto en ['unitary', 'swap']
  • método : el complemento del método de síntesis unitaria que se va a utilizar.
  • 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 un método de síntesis method distinto del predeterminado, pero este no pueda sintetizar la operación o el circuito sintetizado no se ajuste al objetivo.

Eleva

TranspilerError – si method se ha especificado pero no aparece en la lista de complementos instalados. La lista de plugins instalados se puede consultar 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 (DAGCircuit) – Qiskit IR para optimizar.
  • state (DAGCircuit) – Estado asociado a la ejecución del flujo de trabajo por parte del propio gestor de pasadas.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | 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 [ DAGCircuit, 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.