Skip to main content
IBM Quantum Platform

CollectMultiQBlocks

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

GitHub

Bases: AnalysisPass

Colete sequências de portas ininterruptas que atuam em grupos de qubits. max_block_size especifica o número máximo de qubits que podem ser acionados por um único grupo de portas

Percorra o DAG e encontre blocos de portas que atuam consecutivamente em grupos de qubits. Escreva os blocos para property_set como uma lista de blocos do formulário:

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

Os blocos são relatados em uma ordem topológica válida. Além disso, as portas de cada bloco também são relatadas em ordem topológica. Algumas portas podem não estar presentes em nenhum bloco (por exemplo, se o número de operandos for maior que max_block_size)

Por padrão, os blocos são coletados na direção das entradas para as saídas do DAG. A opção collect_from_back permite alterar essa direção, ou seja, coletar blocos das saídas para as entradas. Observe que os blocos ainda são relatados em uma ordem topológica válida.

Uma estrutura de dados Disjoint Set Union (DSU) é usada para manter os blocos à medida que as portas são processadas. Essa estrutura de dados aponta cada qubit para um conjunto em todos os momentos, e os conjuntos correspondem aos blocos atuais. Eles mudam com o tempo e a estrutura de dados permite que essas mudanças sejam feitas rapidamente.


Atributos

is_analysis_pass

Verificar se o passe é um passe de análise.

Se a passagem for um AnalysisPass,, isso significa que a passagem pode analisar o DAG e escrever os resultados dessa análise no conjunto de propriedades. As modificações no DAG não são permitidas por esse tipo de passe.

is_transformation_pass

Verificar se o passe é um passe de transformação.

Se a passagem for um TransformationPass,, isso significa que a passagem pode manipular o DAG, mas não pode modificar o conjunto de propriedades (mas pode ser lido).


Métodos

execute

execute(passmanager_ir, state, callback=None)

GitHub

Executar a tarefa de otimização para a entrada Qiskit IR.

Parâmetros

  • passmanager_ir (Any) – Qiskit IR para otimizar.
  • state (PassManagerState) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passes.
  • callback (Callable | None) – Uma função de retorno de chamada que é chamada a cada execução da tarefa de otimização.

Retorna

Qiskit IR otimizado e estado do fluxo de trabalho.

Tipo de retorno

tupla [ Any, PassManagerState ]

find_set

find_set(index)

GitHub

Função DSU para encontrar a raiz de um conjunto de itens Se meu pai for eu mesmo, eu sou a raiz. Caso contrário, encontraremos recursivamente a raiz do meu pai. Depois disso, atribuímos meu pai como minha raiz, evitando a recursão no futuro.

name

name()

GitHub

Nome do passe.

Tipo de retorno

str

run

run(dag)

GitHub

Execute o passe CollectMultiQBlocks no dag.

Os blocos contêm nós "op" em ordem de classificação topológica, de modo que todas as portas em um bloco atuam no mesmo conjunto de qubits e são adjacentes no circuito.

Os blocos são criados examinando os predecessores e sucessores das portas "cx" no circuito. u1, u2, u3, cx, id gates serão incluídos.

Após a execução, property_set['block_list'] é definido como uma lista de tuplas de objetos DAGNode

union_set

union_set(set1, set2)

GitHub

Função DSU para unir dois conjuntos. Encontre as raízes de cada conjunto. Em seguida, designe um deles como pai do outro, ligando assim os conjuntos. Incorpora o conjunto menor ao maior para melhorar o desempenho em tempo de execução

update_status

update_status(state, run_state)

GitHub

Atualizar o status do fluxo de trabalho.

Parâmetros

  • state (PassManagerState) – Passar o estado do gerenciador para atualizar.
  • run_state (RunState) – Status de conclusão da tarefa atual.

Retorna

Estado do gerenciador de passes atualizado.

Tipo de retorno

PassManagerState

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.