Skip to content
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

Update basis gates according to the fractional gates flag #2031

Closed
yaelbh opened this issue Nov 10, 2024 · 0 comments · Fixed by #2044
Closed

Update basis gates according to the fractional gates flag #2031

yaelbh opened this issue Nov 10, 2024 · 0 comments · Fixed by #2044
Assignees
Milestone

Comments

@yaelbh
Copy link
Collaborator

yaelbh commented Nov 10, 2024

Currently enabling fractional gates filters adds them to the target (and filters dynamic instructions), but backend.properties() and backend.configuration() remain unchanged.

Once fixed, we can update the convert_to_target accordingly.

wshanks added a commit to wshanks/qiskit-ibm-runtime that referenced this issue Nov 15, 2024
This change moves the filtering of fractional gates and dynamic circuit
instructions up into the processing of the raw configuration and
properties dicts received through the API. Previously, the filtering was
performed only during the creation of the `Target` for the backend. So
previously an `IBMBackend` with fractional gates would have both
fractional gates and dynamic circuit instructions in its configuration
and properties data regardless of what value was used for
`use_fractional_gates`. This situation led to inconsistent behavior when
for example users tried to use `backend.basis_gates` as the reference
for which gates were available instead of
`backend.target.operation_names`.

The previous changes to filter instructions during target creation are
removed here, but the `use_fractional_gates` backend option is retained
because `IBMBackend` loads the properties data lazily and can reload the
configuration data after creation with the `refresh()` method.

Closes Qiskit#2031
wshanks added a commit to wshanks/qiskit-ibm-runtime that referenced this issue Nov 15, 2024
This change moves the filtering of fractional gates and dynamic circuit
instructions up into the processing of the raw configuration and
properties dicts received through the API. Previously, the filtering was
performed only during the creation of the `Target` for the backend. So
previously an `IBMBackend` with fractional gates would have both
fractional gates and dynamic circuit instructions in its configuration
and properties data regardless of what value was used for
`use_fractional_gates`. This situation led to inconsistent behavior when
for example users tried to use `backend.basis_gates` as the reference
for which gates were available instead of
`backend.target.operation_names`.

The previous changes to filter instructions during target creation are
removed here, but the `use_fractional_gates` backend option is retained
because `IBMBackend` loads the properties data lazily and can reload the
configuration data after creation with the `refresh()` method.

Closes Qiskit#2031
wshanks added a commit to wshanks/qiskit-ibm-runtime that referenced this issue Nov 15, 2024
This change moves the filtering of fractional gates and dynamic circuit
instructions up into the processing of the raw configuration and
properties dicts received through the API. Previously, the filtering was
performed only during the creation of the `Target` for the backend. So
previously an `IBMBackend` with fractional gates would have both
fractional gates and dynamic circuit instructions in its configuration
and properties data regardless of what value was used for
`use_fractional_gates`. This situation led to inconsistent behavior when
for example users tried to use `backend.basis_gates` as the reference
for which gates were available instead of
`backend.target.operation_names`.

The previous changes to filter instructions during target creation are
removed here, but the `use_fractional_gates` backend option is retained
because `IBMBackend` loads the properties data lazily and can reload the
configuration data after creation with the `refresh()` method.

Closes Qiskit#2031
yaelbh added a commit that referenced this issue Nov 24, 2024
* Perform fractional gate filtering on raw API dicts

This change moves the filtering of fractional gates and dynamic circuit
instructions up into the processing of the raw configuration and
properties dicts received through the API. Previously, the filtering was
performed only during the creation of the `Target` for the backend. So
previously an `IBMBackend` with fractional gates would have both
fractional gates and dynamic circuit instructions in its configuration
and properties data regardless of what value was used for
`use_fractional_gates`. This situation led to inconsistent behavior when
for example users tried to use `backend.basis_gates` as the reference
for which gates were available instead of
`backend.target.operation_names`.

The previous changes to filter instructions during target creation are
removed here, but the `use_fractional_gates` backend option is retained
because `IBMBackend` loads the properties data lazily and can reload the
configuration data after creation with the `refresh()` method.

Closes #2031

* Undo stray tox.ini change

* Add test of loading target properties

* Fix filtering of fractional gate properties

* black

* Restore instruction filtering to convert_to_target

* Fix test

* Fix comments pointed out in review

* Remove default values from _create_backend_obj

* Regularize filtering of fractional gates

* Set conditional to False when using fractional gates

* Fix rzx->rzz in test backend's properties

* Use Qiskit constant for control flow op names when possible

* typo

* black

* Update qiskit_ibm_runtime/qiskit_runtime_service.py

---------

Co-authored-by: Yael Ben-Haim <yaelbh@il.ibm.com>
@kt474 kt474 added this to the 0.34.0 milestone Nov 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants