Skip to main content
IBM Quantum Platform

AQCSynthesisPlugin

class qiskit.transpiler.passes.synthesis.aqc_plugin.AQCSynthesisPlugin

GitHub

Bases : UnitarySynthesisPlugin

Un plugin de synthèse unitaire Qiskit basé sur l'AQC.

Ce plugin est appelé lorsque transpile() le unitary_synthesis_method paramètre est défini sur "aqc".

Ce plugin prend en charge la personnalisation; il est possible de lui transmettre des paramètres supplémentaires en passant un dictionnaire en tant que unitary_synthesis_plugin_config paramètre de la transpile() fonction.

Paramètres pris en charge dans le dictionnaire :

réseau_layout (str)

Type de géométrie du réseau, l'un de {"sequ", "spin", "cart", "cyclic_spin", "cyclic_line"}. La valeur par défaut est "spin".

connectivity_type (str)

type de connectivité interqubit, {"full", "line", "star"}. La valeur par défaut est "full".

profondeur (int)

la profondeur du réseau CNOT, c'est-à-dire le nombre de couches, chaque couche étant constituée d'un seul bloc CNOT.

optimiseur (Minimizer)

Une implémentation du protocole Minimizer à utiliser dans le processus d'optimisation.

graine (int)

Une graine aléatoire.

initial_point (ndarray)

Valeurs initiales des angles/paramètres à partir desquelles le processus d'optimisation est lancé.


Attributs

max_qubits

Le nombre maximum de qubits pris en charge est de 14.

min_qubits

Le nombre minimum de qubits pris en charge est de 3.

supported_bases

Le plugin ne prend pas en charge les bases pour la synthèse.

supports_basis_gates

Le plugin ne prend pas en charge les portes de base et, par défaut, il synthétise un circuit en utilisant la base de porte ["rx", "ry", "rz", "cx"] .

supports_coupling_map

Le plugin ne prend pas en charge les cartes de couplage.

supports_gate_errors

Le plugin ne prend pas en charge les erreurs de porte.

supports_gate_errors_by_qubit

Retourne si le plugin supporte la prise en charge de gate_errors_by_qubit

Elle diffère de supports_gate_errors/gate_errors par l'utilisation d'une vue différente des mêmes données. Au lieu d'une clé par nom de porte, cette clé est une clé par qubit et utilise des instances pour représenter les portes (au lieu des noms de portes) Gate pour représenter les portes (au lieu des noms de portes).

gate_errors_by_qubit sera un dictionnaire sous la forme de {(qubits,): [Gate, error]}. Par exemple :

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

Notez que ce dictionnaire peut ne pas être complet ou être vide, car il dépend du fait que le backend cible signale les erreurs de porte sur chaque porte pour chaque qubit. Les taux d'erreur de porte indiqués à l'adresse gate_errors sont fournis par l'objet du dispositif cible Backend et la signification exacte peut varier en fonction du backend.

La valeur par défaut est False

supports_gate_lengths

Le plugin ne prend pas en charge les longueurs de porte.

supports_gate_lengths_by_qubit

Retourne si le plugin supporte la prise en charge de gate_lengths_by_qubit

Elle diffère de supports_gate_lengths/gate_lengths par l'utilisation d'une vue différente des mêmes données. Au lieu d'une clé par nom de porte, il s'agit d'une clé par qubit et les instances sont utilisées pour représenter les portes (au lieu des noms de portes) Gate pour représenter les portes (au lieu des noms de portes)

gate_lengths_by_qubit sera un dictionnaire sous la forme de {(qubits,): [Gate, length]}. Par exemple :

{
(0,): [SXGate(): 0.0006149355812506126, RZGate(): 0.0],
(0, 1): [CXGate(): 0.012012477900732316]
}

où la valeur length est exprimée en secondes.

Notez que ce dictionnaire peut ne pas être complet ou être vide, car il dépend de la façon dont le backend cible indique les longueurs de porte pour chaque porte et chaque qubit.

La valeur par défaut est False

supports_natural_direction

Le plugin ne prend pas en charge la direction naturelle, il suppose des portes bidirectionnelles à deux qubits.

supports_pulse_optimize

Le plugin ne permet pas d'optimiser les impulsions.

supports_target

Si le plugin prend en charge l'option target

target sera un objet Target représentant l'appareil cible pour la sortie de la passe de synthèse.

Par défaut, il s'agit de False puisque l'interface du plugin est antérieure à la classe Target . Si un plugin renvoie True pour cet attribut, on s'attend à ce que le plugin utilise le paramètre Target au lieu des valeurs transmises si l'un des paramètres supports_gate_lengths, supports_gate_errors, supports_coupling_map, et supports_basis_gates est défini (bien que, dans l'idéal, tous ces paramètres devraient contenir des informations en double).


Méthodes

run

run(unitary, **options)

GitHub

Exécuter la synthèse pour la matrice unitaire donnée

Paramètres

  • unitary (numpy.ndarray) – La matrice unitaire à synthétiser dans un DAGCircuit objet
  • options - Les kwargs optionnels qui sont transmis en fonction de la sortie des méthodes support_* sur la classe. Reportez-vous à la documentation de ces méthodes sur UnitarySynthesisPlugin pour connaître les clés et les valeurs.

Retours

La représentation du circuit dag de l'unité. Vous pouvez également renvoyer un tuple de la forme (dag, wires)dag est la représentation du circuit dag de la représentation du circuit de l'unité et wires est le fil de mappage à utiliser pour qiskit.dagcircuit.DAGCircuit.substitute_node_with_dag(). Si vous renvoyez un tuple et que wires est None , le comportement sera le même que si vous ne renvoyiez qu'un tuple DAGCircuit était retourné. De plus, si ce retour se fait à l'adresse None , aucune substitution ne sera effectuée.

Type de retour

DAGCircuit

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.