Closed mx73 closed 1 year ago
Worked on a small code snippet to reproduce the reported issue
from qiskit import IBMQ
from qiskit import QuantumCircuit, transpile
from qiskit.providers.aer import QasmSimulator
# prepare a simple circuit
circuit = QuantumCircuit(2, 2)
circuit.h(0)
circuit.cx(0, 1)
circuit.save_statevector()
# run circuit using qiskit.providers.aer.QasmSimulator (succeeds)
simulator = QasmSimulator()
compiled_circuit = transpile(circuit, simulator)
job = simulator.run(compiled_circuit, shots=1000)
job.result().get_statevector()
# run circuit using ibmq_qasm_simulator simulator backend (fails)
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q')
backend = provider.get_backend('ibmq_qasm_simulator')
compiled_circuit = transpile(circuit, backend)
job = backend.run(compiled_circuit, shots=1000)
job.result().get_statevector()
The reported exception is raised in qiskit.transpiler.passes.basis.basis_translator.py and I'm not sure if/what is missing in https://github.com/qiskit/qiskit-ibmq-provider.
@jyu00, @mtreinish - can you help to understand
stale issue, closing
What is the expected enhancement?
Right now,
save_statevector
only works on local Aer simulator. On IBM's simulators, we must usesnapshot_statevector
with a decrepation warning, and usingsave_statevector
returnsTranspilerError: "Unable to map source basis {('h', 1), ('cx', 2), ('save_statevector', 31), ('t', 1), ('tdg', 1), ('ry', 1)} to target basis {'u', 'mcx', 'mcrz', 'id', 'mcrx', 'mcy', 'p', 'mcry', 'y', 'delay', 'rx', 'ryy', 'kraus', 'mcz', 'mcp', 'mcu1', 'sx', 'cswap', 'mcr', 'snapshot', 'rxx', 'mcsx', 'u3', 'rz', 'cx', 'csx', 'cp', 'u1', 'mcu3', 'measure', 'rzx', 'multiplexer', 'swap', 'z', 's', 'roerror', 'cu2', 'r', 'reset', 'mcswap', 'cu1', 'cu3', 'rzz', 'ry', 'mcu2', 'initialize', 'cz', 'h', 'barrier', 'sdg', 't', 'diagonal', 'x', 'ccx', 'cy', 'tdg', 'u2', 'unitary'} over library <qiskit.circuit.equivalence.EquivalenceLibrary object at 0x000002A1006EFFA0>."
I suggest addingsave_statevector
support for the cloud simulators.