Skip to main content
IBM Quantum Platform

UnitarySynthesis

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

GitHub

Bases: TransformationPass

Sintetizar portas de acordo com suas portas de base.

Sintetizar unitários em algumas portas de base.

Este passe pode aproximar unitários, dadas algumas fidelidades de porta (via target). É possível forçar uma maior aproximação definindo um seletor heurístico approximation_degree.

Essa etapa é multithread quando se utiliza o plug-in de síntese padrão e, por padrão, poderá iniciar um pool de threads com um número de threads igual ao número de CPUs. É possível ajustar o número de threads por meio da RAYON_NUM_THREADS variável de ambiente. Por exemplo, definir RAYON_NUM_THREADS=4 limitaria o pool de threads a 4 threads.

Parâmetros

  • basis_gates – Lista dos nomes das portas a serem selecionadas. Se isso não for especificado, o target argumento deve ser utilizado. Se tanto este quanto o target forem especificados, o valor de target será utilizado e este será ignorado.
  • approximation_degree – Botão heurístico utilizado para a aproximação de circuitos (aproximação de 1.0=no, aproximação de 0.0=maximal ). A aproximação pode tornar o circuito sintetizado mais barato, mas ao custo de se afastar do circuito unitário original. NoneSe isso ocorrer, a aproximação é feita com base nas fidelidades dos portões.
  • coupling_map – O mapa de acoplamento do alvo, caso a síntese seja realizada em um circuito físico. A direcionalidade do mapa de acoplamento será levada em consideração se pulse_optimize for True/None e natural_direction for True/None.
  • pulse_optimize – Indica se os pulsos devem ser otimizados durante a síntese. Um valor de None tentará executar a operação, mas recorrerá a um plano alternativo caso não tenha sucesso. Um valor de True gerará um erro caso a síntese otimizada por pulso não seja bem-sucedida.
  • natural_direction – Se a síntese deve levar em conta a direcionalidade das portas de 2 qubits. Aplica-se apenas quando pulse_optimize é True ou None. A direção natural é determinada verificando-se, em primeiro lugar, se o mapa de acoplamento é unidirecional. Se não houver um mapa de acoplamento ou se o mapa de acoplamento for bidirecional, será utilizada a direção da porta com a menor duração entre as propriedades de destino. TranspilerErrorSe estiver definido como True e não for possível determinar uma direção natural, gera uma exceção. Se definido como “Nenhum”, nenhuma exceção será gerada caso não seja possível determinar uma direção natural.
  • synth_gates – Lista de portas a serem sintetizadas. Se for None e pulse_optimize for False ou None, o valor padrão será ['unitary']. Se None e pulse_optimize == True, o valor padrão é ['unitary', 'swap']
  • método – O plug-in do método de síntese unitária a ser utilizado.
  • min_qubits - O número mínimo de qubits na unidade a ser sintetizada. Se isso for definido e a unitária for menor que o número especificado de qubits, ela não será sintetizada.
  • plugin_config - argumentos de configuração adicionais opcionais (como dict) que são passados diretamente para o plug-in de síntese unitária especificado. Por padrão, isso não terá efeito, pois o plug-in padrão não tem argumentos adicionais. Consulte a documentação de seu plug-in de síntese unitária para saber como usá-lo.
  • target - O opcional Target opcional para o dispositivo de destino para o qual a passagem está sendo compilada. Se especificado, isso substituirá os valores definidos para basis_gates e coupling_map.
  • fallback_on_default – Especifica se o método de síntese padrão deve ser utilizado no caso de ser especificado um método de síntese method diferente do padrão, mas que não consiga sintetizar a operação ou cujo circuito sintetizado não esteja em conformidade com o alvo.

Aumentos

TranspilerError – se method foi especificado, mas não foi encontrado na lista de plug-ins instalados. A lista de plugins instalados pode ser consultada com unitary_synthesis_plugin_names()


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 (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()

GitHub

Nome do passe.

Tipo de retorno

str

run

run(dag)

GitHub

Execute a passagem UnitarySynthesis em dag.

Parâmetros

dag (DAGCircuit) – data de entrada.

Retorna

Saída dag com UnitaryGates sintetizada para a base de destino.

Tipo de retorno

DAGCircuit

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.