Skip to main content
IBM Quantum Platform

F2QSynthesis

class F2QSynthesis(config=None)

Basi: GenericPass[DAGCircuit, DAGCircuit]

Un passaggio di transpilazione per mappare le istruzioni dei circuiti basati sui fermioni a quelle basate sui qubit.

Questo passaggio di transpilazione funziona in modo simile al HighLevelSynthesis passaggio di Qiskit; dato un input FermionicDAGCircuit, esegue un'iterazione delle istruzioni in esso contenute e delega la traduzione in istruzioni basate sui qubit al corrispondente methods. Anche l'inserimento delle istruzioni del circuito basato sui qubit nell'output DAGCircuit è affidato al metodo del plugin. Questo passaggio servirà semplicemente a preparare il file QuantumRegister in base all'impostazione F2QLayout di transpilazione globale.

Utilizzo

Esistono due modi per configurare i plugin utilizzati da questa fase del transpiler. Gli esempi riportati di seguito mostrano la configurazione equivalente a quella del generate_preset_jw_pass_manager().

  1. Fornire un config durante l'inizializzazione:

    >>> from qiskit_fermions.mappers.library import jordan_wigner
    >>> from qiskit_fermions.transpiler import passes
    >>>
    >>> config = {
    ...     "Evolution": ("MapperFn", (jordan_wigner,)),
    ...     "InitializeModes": "TrivialOccupation",
    ...     "OrbitalRotation": "GivensDecomposition",
    ... }
    >>> synth = passes.F2QSynthesis(config)
    
  2. Compilazione manuale dell'attributo methods :

    >>> from qiskit_fermions.mappers.library import jordan_wigner
    >>> from qiskit_fermions.transpiler import passes
    >>>
    >>> synth = passes.F2QSynthesis()
    >>> synth.methods["Evolution"] = passes.MapperFnEvolutionSynthesis(jordan_wigner)
    >>> synth.methods["InitializeModes"] = passes.TrivialOccupationInitializeModesSynthesis()
    >>> synth.methods["OrbitalRotation"] = passes.GivensDecompositionOrbitalRotationSynthesis()
    

    Grazie a questo approccio manuale è anche possibile inserire F2QSynthesisPlugin implementazioni personalizzate senza che sia necessario registrarle tramite un punto di ingresso.

L'inizializzazione di questo passaggio del transpiler può essere effettuata utilizzando gli argomenti elencati di seguito.

Parametri

config (F2QSynthesisConfig | None) – un dizionario opzionale per precompilare il methods con i plugin forniti dal F2QSynthesisPluginManager.


Attributi

methods

Tipo: dict[str, F2QSynthesisPlugin]

Un dizionario dei metodi di traslazione delle istruzioni dai circuiti a fermioni a quelli a qubit.

Affinché questo ciclo di transpilazione abbia effetto, questo dizionario deve essere popolato con istanze del protocollo F2QSynthesisPlugin . Le voci di questo dizionario corrispondono alle di __name__ un'istruzione circuitale.

Tutti i plugin di traslazione disponibili sono gestiti dal F2QSynthesisPluginManager.

Nota

Questo dizionario è vuoto per impostazione predefinita! È possibile precompilarlo con i plugin forniti da F2QSynthesisPluginManager specificando un argomento config durante l'inizializzazione di questa istanza del passaggio del transpiler.


Metodi

run

run(dag)

Esegue questo ciclo di transpilazione.

Parametri

dag (DAGCircuit) – il circuito di ingresso con istruzioni basate sui fermioni. Sono op supportate solo le istanze FermionicGate come quelle indicate DAGOpNode .

Risultati

Il circuito di uscita con istruzioni basate sui qubit.

Aumenti

Tipo di restituzione

DAGCircuit

Metodi ereditati

execute

execute(passmanager_ir, state, callback=None)

Esegui l'operazione di ottimizzazione per l'IR di Qiskit in ingresso.

Parametri

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

Risultati

IR ottimizzato di Qiskit e stato del flusso di lavoro.

Tipo di restituzione

tupla [ IR_OUT, PassManagerState ]

name

name()

Nome del passo.

Tipo di restituzione

STR

update_status

update_status(state, run_state)

Aggiornare lo stato del flusso di lavoro.

Parametri

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

Risultati

Stato del gestore dei pass aggiornato.

Tipo di restituzione

PassManagerState

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