CollectMultiQBlocks
class qiskit.transpiler.passes.CollectMultiQBlocks(*args, **kwargs)
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)
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)
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
run
run(dag)
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)
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)
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