Skip to main content
IBM Quantum Platform

BasisTranslator

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

GitHub

Basi: TransformationPass

Traduce le porte in una base di destinazione cercando un insieme di traduzioni da un dato EquivalenceLibrary.

Questo passaggio avviene in più fasi:

  • Determinare la base della sorgente dal circuito di ingresso.
  • Esegue una ricerca di Dijkstra sugli insiemi di basi, partendo dalla base di destinazione del dispositivo. I nuovi gate vengono generati utilizzando le regole del sito EquivalenceLibrary e la ricerca si ferma se sono stati generati tutti i gate nella base di origine.
  • Il percorso trovato, come insieme di regole del sito EquivalenceLibrary,, viene composto in un insieme di regole di sostituzione dei cancelli.
  • Le regole di sostituzione composte vengono applicate in-place a ogni nodo op che non sia già presente nella target_basis.

Se viene specificato l'argomento della parola chiave target e tale Target oggetto contiene operazioni non globali (ovvero definite solo per un sottoinsieme di qubit), secondo quanto calcolato da get_non_global_operation_names(), questa fase tenterà di adattare la traduzione dell'output a tali vincoli. Per le operazioni su un singolo qubit il procedimento è semplice: il ciclo eseguirà una ricerca utilizzando l'unione dell'insieme delle operazioni globali con l'insieme delle operazioni definite esclusivamente su quel qubit. Nel caso delle porte a più qubit la questione è leggermente più complessa: sebbene inizialmente il comportamento sia simile a quello del caso a qubit singolo, non è sufficiente limitarsi a utilizzare tutti i qubit su cui viene eseguita l'operazione (dove l'ordine non è rilevante). Dobbiamo inoltre prendere in considerazione eventuali qubit locali definiti su sottoinsiemi degli argomenti quantistici dell'operazione a più qubit. Ciò significa che l'insieme di riferimento utilizzato per la ricerca di un gate multi-qubit non globale è l'unione delle operazioni globali, dei gate multi-qubit non globali che condividono gli stessi qubit e di qualsiasi gate non globale definito su un qualsiasi sottoinsieme dei qubit utilizzati.

Nota

Nel caso di operazioni non globali, è possibile che una singola esecuzione di questo passaggio produca una traduzione incompleta se le porte non globali sono definite su qubit che sono un sottoinsieme di una porta più grande a più qubit. Ad esempio, se si dispone di una porta u definita solo sul qubit 0 e di una porta x solo sul qubit 1, è possibile che, quando si traduce un'operazione a 2 qubit sul qubit 0 e 1, l'uscita abbia u sul qubit 1 e x sul qubit 0. In genere l'esecuzione di questo passaggio una seconda volta corregge questi problemi.


Errori di traduzione

Questo passaggio genererà un errore se non è disponibile un percorso per convertire un gate di input nella base specificata. Tuttavia, in un passmanager con impostazioni predefinite, questo passaggio viene eseguito più volte in diverse fasi della pipeline di compilazione. Ciò significa che, potenzialmente, i gate di ingresso che vengono convertiti non facevano parte del circuito di ingresso, transpile() poiché sono stati generati da una trasformazione intermedia all’interno del circuito.

Quando si verifica questo errore, in genere significa che la base di destinazione non è universale oppure che sono necessarie ulteriori regole di equivalenza nell'istanza EquivalenceLibrary utilizzata dal BasisTranslator passaggio. Per ulteriori dettagli sull'aggiunta di regole di equivalenza personalizzate, consultare la sezione " Custom Basis Gates ".

Inizializza un'istanza di BasisTranslator.

parametri Biblioteca_di_equivalenza

La libreria di equivalenza che sarà utilizzata dal passaggio BasisTranslator. (Le istruzioni di questa libreria non vengono srotolate da questo passaggio)

tipo equivalenza_biblioteca

EquivalenceLibrary

parametro target_basis

Nomi di basi di destinazione da srotolare, ad esempio ['u3', 'cx'].

tipo target_basis

[liststr]

parametro obiettivo

Il target di compilazione del backend

tipo target

Destinazione

parametri min_qubit

Il numero minimo di qubit da tradurre per le operazioni nel dag di ingresso.

tipo min_qubits

int


Attributi

is_analysis_pass

Controlla se il passaggio è un passaggio di analisi.

Se il passo è un AnalysisPass,, significa che il passo può analizzare il DAG e scrivere i risultati di tale analisi nel set di proprietà. Questo tipo di passaggio non consente di modificare il DAG.

is_transformation_pass

Controlla se il passaggio è un passaggio di trasformazione.

Se il passaggio è un TransformationPass,, significa che il passaggio può manipolare il DAG, ma non può modificare il set di proprietà (ma può essere letto).


Metodi

execute

execute(passmanager_ir, state, callback=None)

GitHub

Eseguire l'attività di ottimizzazione per l'IR Qiskit in ingresso.

Parametri

  • passmanager_ir (DAGCircuit) – Qiskit IR da ottimizzare.
  • state (DAGCircuit) – Stato associato all'esecuzione del flusso di lavoro da parte dello stesso gestore dei passaggi.
  • callback (Callable[[Task, DAGCircuit, PropertySet, float, int], None] | None) – Una funzione di callback che viene chiamata ad ogni esecuzione di un'attività di ottimizzazione.

Risultati

Qiskit IR ottimizzato e stato del flusso di lavoro.

Tipo di restituzione

tuple [ DAGCircuit, PassManagerState ]

name

name()

GitHub

Nome del passo.

Tipo di restituzione

STR

run

run(dag)

GitHub

Traduce un circuito DAG di ingresso nella base di destinazione.

Parametri

dag (DAGCircuit) – ingresso dag

Aumenti

TranspilerError – se non è possibile raggiungere la base di riferimento

Risultati

circuito tradotto.

Tipo di restituzione

DAGCircuito

update_status

update_status(state, run_state)

GitHub

Aggiornare lo stato del flusso di lavoro.

Parametri

  • state (PassManagerState) – Passare lo stato del gestore da aggiornare.
  • run_state (RunState) – Stato di completamento dell'attività corrente.

Risultati

Stato aggiornato del gestore dei passaggi.

Tipo di restituzione

PassManagerState

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.