Skip to main content
IBM Quantum Platform

StagedPassManager

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

GitHub

Bases: PassManager

Um pipeline de gerenciador de passes criado a partir de estágios individuais.

Essa classe permite criar um pipeline de compilação a partir de estágios fixos. Cada StagedPassManager define uma lista de estágios que são executados em uma ordem fixa, e cada estágio é definido como uma instância autônoma PassManager instância autônoma. Há também os estágios pre_ e post_ para cada estágio definido. Isso permite compor e substituir facilmente diferentes estágios e também adicionar pontos de gancho para permitir modificações programáticas em um pipeline. Ao usar um gerenciador de passes em estágios, você não pode modificar os passes individuais e só pode modificar os estágios.

Por padrão, as instâncias de StagedPassManager definem um pipeline de compilação completo típico de um circuito virtual abstrato para um que seja otimizado e capaz de ser executado no backend especificado. Os estágios predefinidos padrão são:

  1. init - Passagens iniciais a serem executadas antes de incorporar o circuito ao backend.
  2. layout - Mapeia os qubits virtuais no circuito para os qubits físicos no backend.
  3. routing - Insere portas conforme necessário para mover os estados do qubit até que o circuito possa ser executado com o layout escolhido no mapa de acoplamento do backend.
  4. translation - Traduz as portas do circuito para o conjunto de portas de base do backend de destino.
  5. optimization - Otimiza o circuito para reduzir o custo de sua execução. Normalmente, essas passagens são executadas em um loop até que um critério de convergência seja atendido. Por exemplo, o critério de convergência pode ser que a profundidade do circuito não diminua em iterações sucessivas.
  6. scheduling - Passes com reconhecimento de hardware que programam as operações no circuito.
Nota

Para fins de compatibilidade com versões anteriores, o posicionamento relativo desses estágios padrão permanecerá estável no futuro. No entanto, novos estágios podem ser adicionados à lista de estágios padrão entre os estágios atuais. Por exemplo, em uma versão futura, uma nova fase, algo como logical_optimization, poderia ser adicionada imediatamente após a fase init existente na lista de fases padrão. Isso preservaria a compatibilidade para os usuários pré-existentes do site StagedPassManager , pois as posições relativas do palco são preservadas para que o comportamento não seja alterado entre as versões.

Essas etapas serão executadas em ordem, e qualquer etapa marcada como None será ignorada. Se uma etapa for definida várias vezes (ou seja, em diferentes posições relativas), as passagens associadas, incluindo as pré e pós, serão executadas uma vez por declaração. Se uma PassManager entrada estiver sendo usada para mais de uma etapa aqui (por exemplo, no caso de uma Pass entrada que abranja tanto o Layout quanto o Routing), é recomendável defini-la como a primeira etapa da sequência que ela abrange.

Inicializar um novo objeto StagedPassManager

Parâmetros

  • stages (Iterable[str]) – Uma lista opcional de etapas a serem utilizadas nesta instância. Se isso não for especificado, será ['init', 'layout', 'routing', 'translation', 'optimization', 'scheduling'] utilizada a lista padrão de etapas. Após a instanciação, a lista final será imutável e armazenada como uma tupla. Se uma etapa for definida várias vezes (ou seja, em diferentes posições relativas), as passagens associadas, incluindo as pré e pós, serão executadas uma vez por declaração.
  • kwargs - Os valores iniciais PassManager para quaisquer estágios definidos em stages. Se um argumento não for definido, os estágios terão como padrão None , indicando um estágio vazio/não definido.

Aumentos

  • AttributeError - Se um estágio nos argumentos da palavra-chave de entrada não estiver definido.
  • ValueError - Se for especificado um nome de estágio inválido.

Atributos

expanded_stages

Estágios expandidos do gerenciador de passes, incluindo as fases pre_ e post_ .

invalid_stage_regex

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

stages

Passar as etapas do gerenciador


Métodos

append

append(passes)

GitHub

Acrescentar um Conjunto de Passes à programação de passes.

Parâmetros

passes (Task | list[Task]) – Um conjunto de passagens do transpiler a ser adicionado à programação.

Aumentos

TranspilerError - se um passe em passes não for um passe adequado.

Tipo de retorno

Nenhum

draw

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

GitHub

Desenhe o gerenciador de passes em etapas.

Aviso

Esta função chamará a ferramenta Graphviz do sistema para processar um arquivo que contenha cadeias de caracteres controláveis pelo usuário (como nomes de passagens). Recomenda-se chamar esta função apenas com entradas confiáveis.

Parâmetros

  • filename (str) – caminho do arquivo onde a imagem será salva.
  • style (dict) – As chaves são as classes de passe e os valores são as cores para criá-las. Um exemplo pode ser visto no DEFAULT_STYLE. Um dicionário ordenado pode ser usado para garantir uma priorização na atribuição de cores quando um elemento se enquadra em várias categorias. Quaisquer valores não incluídos no dicionário fornecido serão preenchidos a partir do dicionário padrão.
  • raw (bool) – Se for o caso True, salve a saída Dot em formato bruto em vez da imagem.

remove

remove(index)

GitHub

Remove uma passagem específica no agendador.

Parâmetros

index (int) – Passe o índice a ser removido, com base na posição em passes().

Aumentos

PassManagerError - Se o índice não for encontrado.

Tipo de retorno

Nenhum

replace

replace(index, passes)

GitHub

Substituir uma passagem específica no agendador.

Parâmetros

  • index (int) – Passa o índice para substituir, com base na posição em passes().
  • passes (BasePass | list[BasePass]) – Um passe a ser adicionado à programação do gerenciador de passes.

Tipo de retorno

Nenhum

run

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

GitHub

Execute todos os passes no site especificado circuits.

Parâmetros

  • circuits (_CircuitsT) – Circuito(s) para transformar por meio de todos os passes registrados.

  • output_name (str | None) – O nome do circuito de saída. Se None, ele será definido como o mesmo nome do circuito de entrada.

  • callback (Callable | None) –

    Uma função de retorno de chamada que será chamada após a execução de cada passe. A função será chamada com 5 argumentos de palavra-chave:

    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

    Observe que os argumentos da palavra-chave aqui são diferentes daqueles usados pelo comando genérico BasePassManager. Esse gerenciador de passes traduzirá esses argumentos na forma descrita acima.

    Os argumentos exatos passados expõem os componentes internos do gerenciador de passes e estão sujeitos a alterações à medida que os componentes internos do gerenciador de passes mudam. Se você pretende reutilizar uma função de retorno de chamada em várias versões, certifique-se de verificar se os argumentos passados são os mesmos.

    Para usar o recurso de retorno de chamada, você define uma função que receberá o dict de kwargs e acessará as variáveis. Por exemplo:

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

    Ao executar a transpilação com multiprocessamento, a função de retorno de chamada é chamada no contexto de cada subprocesso, independentemente do processo principal.

  • num_processes (int | None) – O número máximo de processos paralelos a serem iniciados se a execução paralela estiver habilitada. Este argumento substitui num_processes o arquivo de configuração do usuário e a variável QISKIT_NUM_PROCS de ambiente. Se definido como None padrão do sistema ou configuração do usuário local, será utilizado.

  • property_set (dict[str, object] | None) – Se fornecido, o valor inicial a ser usado como o PropertySet para o pipeline do gerenciador de passes. Isso pode ser usado para manter a análise de uma execução para outra, nos casos em que você sabe que é seguro compartilhar a análise. Tenha cuidado com o fato de que algumas análises serão específicas para o circuito de entrada e para o circuito de entrada específico Targetportanto, você deve tomar muito cuidado ao usar esse argumento.

Retorna

O(s) circuito(s) transformado(s).

Tipo de retorno

_CircuitsT

to_flow_controller

to_flow_controller()

GitHub

Linearize esse gerenciador em um único FlowControllerLinearpara que ele possa ser aninhado dentro de outro gerenciador de passes.

Retorna

Um gerenciador de passagens linearizado.

Tipo de retorno

FlowControllerLinear

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