UnitarySynthesis
class qiskit.transpiler.passes.UnitarySynthesis(*args, **kwargs)
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
targetargumento deve ser utilizado. Se tanto este quanto otargetforem especificados, o valor detargetserá 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_optimizeforTrue/Noneenatural_directionforTrue/None. - pulse_optimize – Indica se os pulsos devem ser otimizados durante a síntese. Um valor de
Nonetentará executar a operação, mas recorrerá a um plano alternativo caso não tenha sucesso. Um valor deTruegerará 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éTrueouNone. 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_optimizefor False ou None, o valor padrão será['unitary']. SeNoneepulse_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
Targetopcional para o dispositivo de destino para o qual a passagem está sendo compilada. Se especificado, isso substituirá os valores definidos parabasis_gatesecoupling_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
methoddiferente 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)
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
name
run
run(dag)
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
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