Qiskit transpile avec différents jeux de portes de base

Oct 09 2020

Je veux utiliser la fonction transpile Qiskit pour décomposer une matrice unitaire arbitraire / circuit quantique en un type spécial de portes de base. ( from qiskit.compiler import transpile)

Mais pour moi, il semble que les seules portes de base acceptées soient «u1», «u2», «u3» et «cx». Existe-t-il un moyen d'utiliser par exemple «rx», «ry» et «cx» comme portes de base au lieu de «u1», «u2», «u3» et «cx»?

L'erreur suivante

Une exception s'est produite: QiskitError "Impossible de dérouler le circuit sur la base donnée, ['id', 'ry', 'rx', 'cx']. Aucune règle pour développer l'instruction h."

par exemple est obtenu à partir du code:

from qiskit.quantum_info import Operator
from qiskit.compiler import transpile
import matplotlib.pyplot as plt
from qiskit.compiler.transpile import CouplingMap

coupling_string = [[0, 1], [0,2], [1,2]]

CM = CouplingMap(coupling_string)

qc = QuantumCircuit(3)

qc.h(0)
qc.h(1)
qc.h(2)

result = transpile(qc, coupling_map=CM, basis_gates=['id', 'ry', 'rx', 'cx'], optimization_level=1, seed_transpiler=1) 
result.draw(output='mpl')
plt.show()

Réponses

1 MatthewTreinish Oct 08 2020 at 23:05

Quelle version de Qiskit utilisez-vous? La prise en charge de la traduction de base arbitraire a été ajoutée très récemment dans Qiskit 0.20.0 / Qiskit-Terra 0.15.0. 1 Si vous exécutez une ancienne version de Qiskit, le transpilateur échouera ainsi car le dérouleur ne savait pas comment utiliser cet ensemble de base. Cependant, lors de l'utilisation de la dernière version de Qiskit, il affichera une image de circuit comme:

Il convient de noter que la transpilation n'est pas excellente car la passe d'optimisation de 1 qubit ne comprend pas encore les ensembles de bases arbitraires et ne fonctionne toujours que pour u1, u2, u3, c'est pourquoi cette sortie est si grande. Des travaux sont en cours pour résoudre ce problèmehttps://github.com/Qiskit/qiskit-terra/pull/3658

1 https://qiskit.org/documentation/release_notes.html#qiskit-0-20-0