qiskit-braket-provider
qiskit-braket-provider copied to clipboard
Decompose circuits onto the native gate set of the backend
What is the expected behavior?
One could leverage further the qiskit transpiler to compose circuits onto the native gate set of the backend. A possible user experience could look like
backend = AWSBraketProvider().get_backend("...")
circuit = QuantumCircuit(2)
circuit.x(0)
circuit.y(1)
circuit.rzz(1, 0, 1)
to_braket(circuit, backend, native=True)
This is pretty straightforward if we only care about transpiling to the native gateset. However, this isn't enough to create a truly native circuit, since considering only the gateset can produce a circuit where 2q gates are applied to non-adjacent qubits. To accurately compile to a native circuit, we'll need to consider a Target
.
Agreeing. This is primarily a follow-up of #91. Additionally, what we have for Aspen should work out of the box for other devices.
There are actually two more things getting in the way of native transpilation:
- The service does not provide expose parameter ranges for native gates
-
Target
only allows us to specify unbounded parameter ranges (likeRXGate(Parameter("theta"))
) or single angles (likeRXGate(np.pi)
) for parametrized gates; it doesn't provide a way to specify parameter ranges