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().
-
Fornire un
configdurante 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) -
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
F2QSynthesisPluginimplementazioni 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.
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
- ValueError – quando
DAGOpNodesi incontra un il cui non èopdi tipoFermionicGate. - TypeError – quando si incontra un tipo
FermionicGateper il quale non è presente alcun plugin di traduzione inmethods.
Tipo di restituzione
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
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