Skip to main content
IBM Quantum Platform

StagedPassManager

class qiskit.transpiler.StagedPassManager(stages=None, **kwargs)

GitHub

Bases: PassManager

Una canalización del gestor de pases construida a partir de etapas individuales.

Esta clase permite construir un canal de compilación a partir de etapas fijas. Cada StagedPassManager define una lista de etapas que se ejecutan en un orden fijo, y cada etapa se define como una instancia autónoma PassManager independiente. También hay pre_ y post_ etapas para cada etapa definida. Esto permite componer y reemplazar fácilmente diferentes etapas y también añadir puntos de enganche para permitir modificaciones programáticas en una canalización. Si utiliza un gestor de pases por etapas, no podrá modificar los pases individuales y sólo podrá modificar las etapas.

Por defecto, las instancias de StagedPassManager definen un pipeline de compilación completo típico desde un circuito virtual abstracto hasta uno optimizado y capaz de ejecutarse en el backend especificado. Las etapas predefinidas por defecto son:

  1. init - Pases iniciales para ejecutar antes de incrustar el circuito en el backend.
  2. layout - Asigna los qubits virtuales del circuito a los qubits físicos del backend.
  3. routing - Inserta las puertas necesarias para desplazar los estados de los qubits hasta que el circuito pueda ejecutarse con la disposición elegida en el mapa de acoplamiento del backend.
  4. translation - Traduce las puertas del circuito al conjunto de puertas base del backend de destino.
  5. optimization - Optimiza el circuito para reducir el coste de ejecución. Estas pasadas se ejecutarán normalmente en un bucle hasta que se cumpla un criterio de convergencia. Por ejemplo, el criterio de convergencia podría ser que la profundidad del circuito no disminuya en iteraciones sucesivas.
  6. scheduling - Pases conscientes del hardware que programan las operaciones en el circuito.
Nota

Por compatibilidad con versiones anteriores, la posición relativa de estas etapas predeterminadas se mantendrá estable en el futuro. Sin embargo, se pueden añadir nuevas etapas a la lista de etapas por defecto entre las etapas actuales. Por ejemplo, en una futura versión se podría añadir una nueva fase, algo así como logical_optimization, inmediatamente después de la fase init existente en la lista de fases por defecto. Esto preservaría la compatibilidad para los usuarios preexistentes de StagedPassManager , ya que las posiciones relativas del escenario se conservan, por lo que el comportamiento no cambiará entre versiones.

Estas etapas se ejecutarán en orden y cualquier etapa marcada como None se omitirá. Si una etapa se define varias veces (es decir, en diferentes posiciones relativas), las pasadas asociadas, incluidas las previas y posteriores, se ejecutarán una vez por cada declaración. Si una PassManager entrada se utiliza para más de una etapa (por ejemplo, en el caso de una Pass entrada que abarca tanto el diseño como el enrutamiento), conviene asignarla a la primera etapa de la secuencia que abarque.

Inicializar un nuevo objeto StagedPassManager

Parámetros

  • stages (Iterable[str]) – Una lista opcional de etapas que se pueden utilizar para esta instancia. Si no se especifica, se ['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling'] utiliza la lista de etapas predeterminada. Tras la instanciación, la lista final será inmutable y se almacenará como una tupla. Si una etapa se define varias veces (es decir, en diferentes posiciones relativas), las pasadas asociadas, incluidas las previas y posteriores, se ejecutarán una vez por cada declaración.
  • kwargs - Los valores PassManager para cualquier etapa definida en stages. Si no se define un argumento las etapas serán por defecto None indicando una etapa vacía/inexistente.

Eleva

  • AttributeError - Si una etapa en los argumentos de la palabra clave de entrada no está definida.
  • ValueError - Si se especifica un nombre de escenario no válido.

Atributos

expanded_stages

Ampliación de las fases del gestor de pases, incluyendo pre_ y post_ .

invalid_stage_regex

Valor predeterminado: re.compile('\\s|\\+|\\-|\\*|\\/|\\\\|\\%|\\<|\\>|\\@|\\!|\\~|\\^|\\&|\\:|\\[|\\]|\\{|\\}|\\(|\\)')

stages

Etapas del gestor de aprobados


Métodos

append

append(passes)

GitHub

Añade un Conjunto de Pases al calendario de pases.

Parámetros

passes (Task | list[Task]) – Un conjunto de pasadas del transpilador que se deben añadir a la programación.

Eleva

TranspilerError - si un pase en los pases no es un pase adecuado.

Tipo de retorno

Ninguna

draw

draw(filename=None, style=None, raw=False)

GitHub

Dibuja el gestor de pases escalonados.

Aviso

Esta función ejecutará la herramienta Graphviz del sistema sobre un archivo que contenga cadenas de texto controladas por el usuario (como los nombres de los pasos). Se recomienda llamar a esta función únicamente con datos de confianza.

Parámetros

  • filename (str) – ruta de archivo donde guardar la imagen.
  • style (dict) – Las claves son las clases de pases y los valores son los colores con los que se crearán. Se puede ver un ejemplo en el archivo DEFAULT_STYLE. Se puede utilizar un diccionario ordenado para garantizar un orden de prioridad a la hora de asignar colores cuando un paso entra en varias categorías. Los valores que no figuren en el diccionario proporcionado se completarán con los del diccionario predeterminado.
  • raw (bool) – Si es así True, guarda el archivo Dot sin procesar en lugar de la imagen.

remove

remove(index)

GitHub

Elimina un pase concreto en el planificador.

Parámetros

index (int) – Índice de paso a eliminar, basado en la posición en passes().

Eleva

PassManagerError - Si no se encuentra el índice.

Tipo de retorno

Ninguna

replace

replace(index, passes)

GitHub

Sustituir un pase concreto en el programador.

Parámetros

  • index (int) – Pasa el índice a reemplazar, basado en la posición en passes().
  • passes (BasePass | list[BasePass]) – Un pase que se va a añadir al calendario del gestor de pases.

Tipo de retorno

Ninguna

run

run(circuits, output_name=None, callback=None, num_processes=None, *, property_set=None)

GitHub

Ejecute todas las pasadas en la dirección circuits especificada.

Parámetros

  • circuits (_CircuitsT) – Circuito(s) a transformar a través de todos los pases registrados.

  • output_name (str | None) – El nombre del circuito de salida. Si None, se ajustará al mismo que el nombre del circuito de entrada.

  • callback (Callable | None) –

    Una función callback que será llamada después de la ejecución de cada pase. La función se llamará con 5 argumentos de palabra clave:

    pass_ (Pass): the pass being run
    dag (DAGCircuit): the dag output of the pass
    time (float): the time to execute the pass
    property_set (PropertySet): the property set
    count (int): the index for the pass execution
    Nota

    Tenga en cuenta que los argumentos de palabra clave aquí son diferentes a los utilizados por el genérico BasePassManager. Este gestor de pases traducirá esos argumentos a la forma descrita anteriormente.

    Los argumentos exactos que se pasan exponen las interioridades del gestor de pases y están sujetos a cambios a medida que cambien las interioridades del gestor de pases. Si pretende reutilizar una función de devolución de llamada en varias versiones, asegúrese de comprobar que los argumentos que se pasan son los mismos.

    Para utilizar la función de devolución de llamada a definir una función que tendrá en kwargs dict y acceder a las variables. Por ejemplo:

    def callback_func(**kwargs):
        pass_ = kwargs['pass_']
        dag = kwargs['dag']
        time = kwargs['time']
        property_set = kwargs['property_set']
        count = kwargs['count']
        ...
    Nota

    Cuando se ejecuta la transpilación con multiproceso, la función callback se invoca en el contexto de cada subproceso, independientemente del proceso padre.

  • num_processes (int | None) – El número máximo de procesos paralelos que se pueden iniciar si se habilita la ejecución paralela. Este argumento anula num_processes en el archivo de configuración del usuario y la QISKIT_NUM_PROCS variable de entorno. Si se establece en, se utilizará la configuración None predeterminada del sistema o la configuración local del usuario.

  • property_set (dict[str, object] | None) – Si se indica, el valor inicial que se utilizará como PropertySet para la canalización del gestor de pases. Puede utilizarse para conservar el análisis de una ejecución a otra, en los casos en los que se sabe que es seguro compartir el análisis. Tenga en cuenta que algunos análisis serán específicos del circuito de entrada y del Targetpor lo que debes tener mucho cuidado al utilizar este argumento.

Devuelve

El circuito o circuitos transformados.

Tipo de retorno

_CircuitsT

to_flow_controller

to_flow_controller()

GitHub

Linealizar este gestor en un único FlowControllerLinearpara que pueda anidarse dentro de otro gestor de pases.

Devuelve

Un gestor de pases linealizado.

Tipo de retorno

FlowControllerLinear

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