BasisTranslator
class qiskit.transpiler.passes.BasisTranslator(*args, **kwargs)
Bases: TransformationPass
Traduz os portões para uma base de destino, buscando um conjunto de traduções de um determinado EquivalenceLibrary.
Esse passe funciona em várias etapas:
- Determine a base da fonte do circuito de entrada.
- Execute uma pesquisa Dijkstra em conjuntos de bases, começando pelo alvo do dispositivo. Novas portas estão sendo geradas usando as regras do site EquivalenceLibrary fornecido e a pesquisa será interrompida se todas as portas na base de origem tiverem sido geradas.
- O caminho encontrado, como um conjunto de regras do site EquivalenceLibrary,, é composto em um conjunto de regras de substituição de porta.
- As regras de substituição compostas são aplicadas no local a cada nó de operação que ainda não esteja na base de destino.
Se o argumento de palavra-chave de destino for especificado e esse Target objeto contiver operações que não sejam globais (ou seja, definidas apenas para um subconjunto de qubits), conforme calculado por get_non_global_operation_names(), esta etapa tentará ajustar a tradução de saída a essas restrições. Para operações com 1 qubit, isso é simples: a passagem realizará uma pesquisa utilizando a união do conjunto de operações globais com o conjunto de operações definidas exclusivamente para esse qubit. No caso das portas de múltiplos qubits, a questão é um pouco mais complexa; embora o comportamento seja inicialmente semelhante ao do caso de um único qubit, não basta simplesmente utilizar todos os qubits sobre os quais a operação é executada (onde a ordem não é significativa). Também precisamos levar em conta quaisquer qubits locais potenciais definidos em subconjuntos dos argumentos quânticos para a operação com múltiplos qubits. Isso significa que o conjunto-alvo utilizado para a busca de uma porta multiqubit não global é a união das operações globais, das portas multiqubit não globais que compartilham os mesmos qubits e de quaisquer portas não globais definidas em qualquer subconjunto dos qubits utilizados.
No caso de operações não globais, é possível que uma única execução dessa passagem produza uma tradução incompleta se qualquer porta não global for definida em qubits que sejam um subconjunto de uma porta multiqubit maior. Por exemplo, se você tiver uma porta u definida somente no qubit 0 e uma porta x somente no qubit 1, é possível que, ao traduzir uma operação de 2 qubits no qubit 0 e 1, a saída tenha u no qubit 1 e x no qubit 0. Normalmente, a execução dessa passagem uma segunda vez corrige esses problemas.
Erros de tradução
Essa passagem dará erro se não houver um caminho para traduzir uma porta de entrada para a base especificada. No entanto, durante um gerenciador de passagens predefinido típico/default, essa passagem é executada várias vezes em diferentes estágios do pipeline de compilação. Isso significa que, possivelmente, as portas de entrada que estão sendo traduzidas não estavam no circuito de entrada para transpile() pois foram geradas por uma transformação intermediária no circuito.
Quando esse erro ocorre, normalmente significa que a base de destino não é universal ou que há regras de equivalência adicionais necessárias na EquivalenceLibrary que está sendo usada pelo BasisTranslator passar. Você pode consultar Portas de base personalizadas para obter detalhes sobre como adicionar regras de equivalência personalizadas.
Inicializar uma instância do site BasisTranslator.
param equivalence_library
A biblioteca de equivalência que será usada pela passagem BasisTranslator. (As instruções nessa biblioteca não serão desenroladas por essa passagem)
tipo equivalência_biblioteca
EquivalenceLibrary
param target_basis
Nomes de bases de destino para desenrolar, por exemplo, ['u3', 'cx'].
tipo target_basis
[liststr]
param target
O destino de compilação do backend
tipo de alvo
Destino
param min_qubits
O número mínimo de qubits para que as operações no dag de entrada sejam traduzidas.
tipo min_qubits
int
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 (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 ]
name
run
run(dag)
Traduzir um DAGCircuit de entrada para a base de destino.
Parâmetros
dag (DAGCircuit) – data de entrada
Aumentos
TranspilerError - se a base alvo não puder ser alcançada
Retorna
circuito traduzido.
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