Transparansi Qiskit dengan gerbang basis yang berbeda
Saya ingin menggunakan fungsi transpil Qiskit untuk mendekomposisi matriks kesatuan / rangkaian kuantum yang berubah-ubah menjadi jenis gerbang basis khusus. ( from qiskit.compiler import transpile)
Tapi bagi saya tampaknya satu-satunya gerbang dasar yang diterima adalah 'u1', 'u2', 'u3' dan 'cx'. Apakah ada cara untuk menggunakan misalnya 'rx', 'ry' dan 'cx' sebagai gerbang basis alih-alih 'u1', 'u2', 'u3' dan 'cx'?
Kesalahan berikut
Pengecualian telah terjadi: QiskitError "Tidak dapat membuka gulungan sirkuit ke basis tertentu, ['id', 'ry', 'rx', 'cx']. Tidak ada aturan untuk memperluas instruksi h."
misalnya didapat dari kode:
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()
Jawaban
Versi Qiskit mana yang Anda jalankan? Dukungan untuk terjemahan basis sewenang-wenang ditambahkan baru-baru ini di Qiskit 0.20.0 / Qiskit-Terra 0.15.0. 1 Jika Anda menjalankan Qiskit versi lama maka transpiler akan gagal seperti ini karena unroller tidak tahu bagaimana menggunakan basis set tersebut. Namun, saat menggunakan rilis Qiskit terbaru akan menampilkan gambar rangkaian seperti:
Perlu dicatat bahwa transpilasinya tidak bagus karena 1 qubit optimization pass belum memahami kumpulan basis yang berubah-ubah dan masih hanya berfungsi untuk u1, u2, u3, itulah sebabnya keluarannya sangat besar. Ada pekerjaan yang tertunda untuk memperbaikinyahttps://github.com/Qiskit/qiskit-terra/pull/3658
1 https://qiskit.org/documentation/release_notes.html#qiskit-0-20-0