BlockBasePadder
class BlockBasePadder(*args, **kwargs)
Bases: TransformationPass
A classe base do passe de preenchimento.
Essa passagem requer que uma das passagens de agendamento seja executada antes dela mesma. Como há várias estratégias de agendamento, a seleção do passe de agendamento é deixada nas mãos do designer do gerenciador de passes. Quando uma análise de agendamento é executada, o site node_start_time é gerado no property_set. Essas informações são representadas por um dicionário python dos tempos de execução esperados das instruções, com base nas instâncias dos nós. A passagem de preenchimento espera que todos os DAGOpNode no circuito sejam agendados.
Essa classe básica não define nenhuma sequência para intercalar, mas gerencia o local onde a sequência é inserida e fornece um conjunto de informações necessárias para construir a sequência adequada. Assim, uma subclasse dessa passagem só precisa implementar o método _pad() , no qual a subclasse constrói um bloco de circuito para inserir. Esse mecanismo elimina muita lógica padrão para gerenciar circuitos DAG inteiros.
Observe que as subclasses de passagem de preenchimento devem definir sequências de intercalação satisfatórias:
- A sequência intercalada não altera a hora de início de outros nós
- A sequência intercalada deve ter a duração total do
time_intervalfornecido.
Qualquer manipulação que viole essas restrições pode impedir que essa passagem de base rastreie corretamente a hora de início de cada instrução, o que pode resultar na violação das restrições de alinhamento do hardware.
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
Verifique 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
__call__
__call__(circuit, property_set=None)
Executa o circuito de passagem.
Parâmetros
- circuit (QuantumCircuit) – O dia em que o passe é executado.
- property_set (PropertySet | dict | None) – Conjunto de propriedades de entrada/saída. Uma passagem de análise pode alterar a propriedade definida no local. Se não for fornecido, será utilizado o atributo
property_setexistente do passe (se definido).
Retorna
Se uma transformação for bem-sucedida, o resultado será QuantumCircuit. Se a análise for aprovada, o circuito de entrada.
Tipo de retorno
execute
execute(passmanager_ir, state, callback=None)
Executar a tarefa de otimização para a entrada Qiskit IR.
Parâmetros
- passmanager_ir (DAGCircuit) – Qiskit IR para otimização.
- state (DAGCircuit) – Estado associado à execução do fluxo de trabalho pelo próprio gerenciador de passagens.
- callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | 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[ DAGCircuit, PassManagerState ]
name
name()
Nome do passe.
Tipo de retorno
str
run
run(dag)
Execute o passe de preenchimento em dag.
Parâmetros
dag (DAGCircuit) – DAG a ser verificado.
Retorna
DAG com tempo ocioso preenchido com instruções.
Aumentos
TranspilerError - Quando um determinado nó não está programado, é provável que alguma passagem de transformação seja inserida antes que esse nó seja chamado.
Tipo de retorno
update_status
update_status(state, run_state)
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