Introdução à transpilação
A transpilação é o processo de reescrever um determinado circuito de entrada para que se adapte à topologia de um dispositivo quântico específico e otimize as instruções do circuito para execução em computadores quânticos sujeitos a ruído. Esta documentação aborda as ferramentas e os fluxos de trabalho para a transpilagem local disponíveis para todos os usuários do Qiskit. Se você estiver usando primitivas e estiver interessado apenas nas opções padrão de transpilagem fornecidas pelo serviço Qiskit Runtime, leia o tópico “Configurar a compilação em tempo de execução para Qiskit Runtime ”.
O processo de transpilação utiliza um circuito que contém suas instruções:

Em seguida, a transpilação o transforma de modo que somente as instruções disponíveis em um backend escolhido sejam usadas e otimiza essas instruções para minimizar os efeitos do ruído:

Um componente central do Qiskit SDK, o transpilador foi projetado para modularidade e extensibilidade. Seu principal uso é escrever novas transformações de circuito (conhecidas como passagens de transpilador) e combiná-las com outras passagens existentes, reduzindo consideravelmente a profundidade e a complexidade dos circuitos quânticos. Quais passes são encadeados e em que ordem têm um efeito importante no resultado final. Esse pipeline é determinado pelo PassManager e StagedPassManager objetos. O StagedPassManager orquestra a execução de um ou mais PassManagers e determina a ordem em que eles são executados, enquanto o objeto PassManager é apenas uma coleção de um ou mais passes. Pense no StagedPassManager como o maestro de uma orquestra, o PassManagers como as diferentes seções de instrumentos e os objetos Pass como os músicos individuais. Dessa forma, você pode compor circuitos quânticos eficientes em termos de hardware que permitem executar trabalhos em escala de utilidade pública e, ao mesmo tempo, manter o ruído gerenciável.
Encontre mais informações sobre os estágios do gerenciador de passagem no tópico Estágios do Transpiler.
Arquitetura do conjunto de instruções
Além de reduzir a profundidade e a complexidade dos circuitos quânticos, o transpilador foi projetado para transformar as instruções contidas em um determinado site QuantumCircuit para obedecer à arquitetura de conjunto de instruções (ISA) de um backend específico. Os circuitos que obedecem à ISA consistem apenas em instruções que são compatíveis com as operações de fluxo de controle do back-end, como as portas de base disponíveis no hardware, medições, redefinições e operações de fluxo de controle, e estão em conformidade com as restrições especificadas pela conectividade do hardware, ou seja, o alvo Targetdo backend, como as portas de base disponíveis do hardware, medições, reinicializações e operações de fluxo de controle, e cumprem as restrições especificadas pela conectividade do hardware, ou seja, o CouplingMap. Ao enviar um trabalho para um backend do IBM Quantum®, os circuitos devem aderir ao ISA do backend.
Etapas do transpiler
O pipeline do transpilador pré-construído do Qiskit consiste em seis estágios fundamentais:
init- Essa passagem executa todas as passagens iniciais necessárias antes que o circuito possa ser incorporado. Normalmente, isso envolve o desenrolar de instruções personalizadas e a conversão do circuito para todas as portas de um e dois qubits. Por padrão, isso valida as instruções do circuito e converte portas de vários qubits em portas de um e dois qubits.layout- Essa passagem aplica um layout, mapeando os qubits virtuais em seu circuito para os qubits físicos da QPU.routing- Essa passagem é executada após a aplicação de um layout e injetará portas (ou seja, SWAPs) no circuito original para torná-lo compatível com a conectividade da QPU (mapa de acoplamento).translation- Essa passagem traduz as portas do circuito para o conjunto de instruções básicas da QPU.optimization- Essa passagem executa um loop de otimização para encontrar decomposições mais eficientes do circuito quântico até que uma condição seja atendida (como uma profundidade fixa).scheduling- Esse estágio é para qualquer passe de agendamento com reconhecimento de hardware. Se o usuário especificar um método de programação, esse estágio será responsável por todo o tempo ocioso no circuito.
Se você personalizar um fluxo de trabalho de transpilação, use esses estágios como uma diretriz durante o desenvolvimento.
Transpile com gerenciadores de etapas
A maneira recomendada de transpilar um circuito é criar um gerenciador de passagens em etapas e, em seguida, executar o método run com seu circuito como entrada. Você pode usar a função generate_preset_pass_manager para gerar um gerenciador de passes em etapas com padrões razoáveis.
Usuários mais avançados podem personalizar um conjunto de objetos PassManager e StagedPassManager e determinar a ordem em que cada estágio é executado. Isso pode alterar drasticamente o circuito de saída final. De fato, uma abordagem personalizada para transpilar um algoritmo quântico geralmente produz uma supressão de erros mais eficiente do que a abordagem padrão. Uma abordagem personalizada envolve a reescrita de circuitos quânticos para atender às restrições de hardware e suprimir os efeitos do ruído. O fluxo da lógica para essa cadeia de ferramentas é personalizável e não precisa ser linear. O processo de transpilação pode preparar loops iterativos, ramificações condicionais e outros comportamentos complexos. Um bom ponto de partida ao desenvolver um conjunto de passes personalizados é examinar a sequência padrão de transformações.
Para obter uma visão geral da transpilação usando gerenciadores de passagens, consulte Transpilar com gerenciadores de passagens.
Transpilação padrão
Para uma maneira mais simples, mas menos personalizável, de usar o transpiler, utilize a qiskit.compiler.transpile função. Isso gera e executa um dos objetos StagedPassManager predefinidos com base, entre outras opções, em um optimization_level sinalizador que pode ser definido como 0, 1, 2 ou 3. Níveis mais altos geram circuitos mais otimizados, mas com tempos de transpilagem mais longos.
Próximas etapas
- Para saber como usar a função
generate_preset_passmanager, comece pelo tópico Definições padrão de transpilação e opções de configuração. - Continue aprendendo sobre transpilação com o tópico Transpiler stages.
- Experimente o guia Comparar configurações do transpiler.
- Experimente um exemplo de ponta a ponta que usa circuitos transpilados no tutorial Estimativa de energia do estado fundamental da cadeia de Heisenberg com VQE.
- Consulte a documentação da API Transpile.
- Aprenda a transpilá-los.