-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
An user should have an easy way to verify a circuit is compatible with a target backend #12916
Comments
Sounds like this belongs to Qiskit Core? |
@1ucian0 do you agree that this should be in Qiskit? Given |
yeap, I agree
…On Tue, Jul 30, 2024, 11:33 PM Jessie Yu ***@***.***> wrote:
@1ucian0 <https://github.com/1ucian0> do you agree that this should be in
Qiskit? Given Target lives in Qiskit, and this could apply to non-IBM
target backend as well.
—
Reply to this email directly, view it on GitHub
<#12916>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAF3FZKP6TJUR2SEMFRZG3LZPABA7AVCNFSM6AAAAABLKVT6E2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJZGI2DSMJXGY>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Is there already an issue in qiskit tracking this? I'd like to add some information. First, FYI @nonhermitian the function https://github.com/Qiskit/qiskit-ibm-runtime/blob/3a9b08ed422e0de52981275537340c0a2af7a75b/qiskit_ibm_runtime/utils/utils.py#L78 I believe this is what you're looking for. Note that currently the function is suspected to contain a bug, tracked in Qiskit/qiskit-ibm-runtime#1843. Second, when the function is written in qiskit, I recommend not to write from scratch but to copy from qiskit-ibm-runtime. Although it looks easy, as you see it's not entirely trivial (we've spotted at least two bugs since its first version), so it will be a pity to repeat the same mistakes again in qiskit. |
It is a bit confusing calling it an isa check. I don't think the underlying topology is part of the isa. |
The documentation related to ISA from the beginning has always included connectivity, see for example https://www.ibm.com/quantum/blog/isa-circuits and https://docs.quantum.ibm.com/guides/get-started-with-primitives. |
Huh, did not know that. The implication is that every Eagle has a different ISA. |
Transfering to Qiskit/qiskit |
I'll take a look into this. I'm assuming we could evaluate the instructions present in the circuit, as well as the parameters bound to them, with the |
This is what's done in qiskit-ibm-runtime, you can copy from there (up to a potential bug). |
Fwiw, we have the from qiskit.transpiler.passes import GatesInBasis
def is_supported(circuit, target):
pass_ = GatesInBasis(target=target)
pass_(circuit)
return pass_.property_set["all_gates_in_basis"] (or something like that). Maybe the next step of discussion is whether this can be done purely by documentation, or if there should be a helper function, and if so, what its API should be. |
Thanks @jakelishman, does the pass take into account also connectivity? |
Yeah, if the input is a |
@jake-lishman I'm not familiar with the DAG representation that the pass is using. In qiskit-ibm-runtime we skip instructions with calibrations: https://github.com/Qiskit/qiskit-ibm-runtime/blob/157233c731433067f6e2860b7795d8fd14efcf0d/qiskit_ibm_runtime/utils/utils.py#L63. Will the pass do something equivalent? |
Looking at it now, that pass doesn't check calibrations. I'm not entirely familiar with the calibration-level workflows (so maybe there's a reason), but that does feel slightly awkward to me that it doesn't. |
What is the expected feature or enhancement?
If I am given a circuit, I would like an easy way to verify if it is, or is not, compatible with a given backend.
Tket has such functionality: https://tket.quantinuum.com/api-docs/backends.html#pytket.backends.Backend.valid_circuit and it would be nice to include it here as well.
Acceptance criteria
There is an easy way to verify a circuit will run on a target backend.
The text was updated successfully, but these errors were encountered: