Plugin del passaggio del transpiler
Il passaggio del transpiler F2QSynthesis espone un'interfaccia plugin (vedi F2QSynthesisPlugin) attraverso la quale è possibile registrare le implementazioni per la mappatura delle istruzioni basate sui fermioni a quelle basate sui qubit.
I plugin disponibili sono gestiti dal F2QSynthesisPluginManager. La scelta della giusta combinazione di plugin di sintesi è fondamentale e il passaggio di transpilazione F2QSynthesis non ha alcun plugin predefinito! A tal fine, consultare il transpiler presets.
Rubrica 1 | Rubrica 2 |
|---|---|
F2QSynthesisPlugin(*args, **kwargs) | Il protocollo per i plugin relativi alla fase di transpilazione F2QSynthesis . |
F2QSynthesisPluginManager() | Un semplice gestore dei plugin installati per la sintesi da fermioni a qubit. |
I plugin da utilizzare in fase di esecuzione devono essere registrati nell'attributo F2QSynthesis.methods . Ciò può essere fatto facilmente tramite l'argomento config che F2QSynthesis specifica i plugin da utilizzare dal oppure F2QSynthesisPluginManager può essere fatto manualmente scrivendo direttamente F2QSynthesis.methods nel.
La tabella seguente elenca i plugin di sintesi integrati, ordinati in base all’oggetto su FermionicGate cui agiscono:
Nome dell'istruzione del circuito | Nome del metodo del plugin | Riferimenti |
|---|---|---|
Evolution | MapperFn | MapperFnEvolutionSynthesis |
InitializeModes | TrivialOccupation | TrivialOccupationInitializeModesSynthesis |
OrbitalRotation | GivensDecomposition | GivensDecompositionOrbitalRotationSynthesis |
PrepareSlaterDeterminant | GivensDecompositionSlater | GivensDecompositionSlaterDeterminantSynthesis |
Rubrica 1 | Rubrica 2 |
|---|---|
GivensDecompositionOrbitalRotationSynthesis() | A F2QSynthesisPlugin per la trasposizione OrbitalRotation nelle rotazioni di Givens. |
GivensDecompositionSlaterDeterminantSynthesis(*) | A F2QSynthesisPlugin per la transpilazione PrepareSlaterDeterminant. |
MapperFnEvolutionSynthesis(mapper_fn[,...] ) | A F2QSynthesisPlugin per la transpilazione Evolution con una mappatura personalizzata. |
TrivialOccupationInitializeModesSynthesis() | A F2QSynthesisPlugin per la transpilazione InitializeModes con occupazione minima. |
Funzioni di supporto aggiuntive
L'ordine dei termini di Pauli generato da una funzione di mappatura viene mantenuto durante la sintesi, poiché una formula di prodotto sintetizza i termini nell'ordine in cui li riceve. Questi adattatori avvolgono una funzione di mappatura per scegliere quell'ordine:
Rubrica 1 | Rubrica 2 |
|---|---|
group_wise(mapper_fn) | Avvolge una funzione di mappatura in modo che mappi un operatore un gruppo alla volta. |
simplify(mapper_fn) | Avvolge una funzione mapper in modo da semplificare l'operatore che restituisce. |