Skip to main content
IBM Quantum Platform

CollectMultiQBlocks

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

GitHub

Bases: AnalysisPass

Recoger secuencias de puertas ininterrumpidas que actúan sobre grupos de qubits. max_block_size especifica el número máximo de qubits sobre los que puede actuar un mismo grupo de puertas

Recorre el DAG y encuentra bloques de puertas que actúen consecutivamente sobre grupos de qubits. Escriba los bloques en property_set como una lista de bloques del formulario:

[[g0, g1, g2], [g4, g5]]

Los bloques se comunican en un orden topológico válido. Algunas puertas pueden no estar presentes en ningún bloque (por ejemplo, si el número de operandos es superior a max_block_size)

Por defecto, los bloques se recogen en la dirección de las entradas hacia las salidas del DAG. La opción collect_from_back permite cambiar esta dirección, es decir, recoger bloques de las salidas hacia las entradas. Obsérvese que los bloques siguen apareciendo en un orden topológico válido.

Se utiliza una estructura de datos Disjoint Set Union (DSU) para mantener los bloques a medida que se procesan las puertas. Esta estructura de datos señala cada qubit a un conjunto en todo momento y los conjuntos corresponden a bloques actuales. Estos cambian con el tiempo y la estructura de datos permite realizar estos cambios rápidamente.


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 ]

find_set

find_set(index)

GitHub

Función DSU para encontrar la raíz de un conjunto de elementos Si mi padre soy yo mismo, soy la raíz. Si no, buscamos recursivamente la raíz de mi padre. Después de eso, asignamos mi padre a ser mi raíz, ahorrando recursividad en el futuro.

name

name()

GitHub

Nombre del pase.

Tipo de retorno

str

run

run(dag)

GitHub

Ejecuta el pase CollectMultiQBlocks en dag.

Los bloques contienen nodos "op" en orden de clasificación topológica, de modo que todas las puertas de un bloque actúan sobre el mismo conjunto de qubits y son adyacentes en el circuito.

Los bloques se construyen examinando las puertas "cx" predecesoras y sucesoras en el circuito. u1 se incluirán las puertas u2, u3, cx, id.

Tras la ejecución, property_set['block_list'] se convierte en una lista de tuplas de objetos DAGNode

union_set

union_set(set1, set2)

GitHub

Función DSU para unir dos conjuntos. Calcula las raíces de cada conjunto. A continuación, asigna a uno de ellos como padre del otro, vinculando así los conjuntos. Incorpora el conjunto más pequeño al más grande para mejorar el rendimiento en tiempo de ejecución

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.