From aa4a5fbd1038de7ead4b0f1f6b92a01c6bf26008 Mon Sep 17 00:00:00 2001 From: Jun Doi Date: Fri, 20 Oct 2023 18:46:02 +0900 Subject: [PATCH 1/5] add check for backend version to get backend name --- qiskit/utils/backend_utils.py | 8 ++++++-- releasenotes/notes/fix_backend_name-e84661707058b529.yaml | 6 ++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 releasenotes/notes/fix_backend_name-e84661707058b529.yaml diff --git a/qiskit/utils/backend_utils.py b/qiskit/utils/backend_utils.py index 7f71a7c91897..a7952a6a1b5b 100644 --- a/qiskit/utils/backend_utils.py +++ b/qiskit/utils/backend_utils.py @@ -186,8 +186,12 @@ def is_statevector_backend(backend): if isinstance(backend, StatevectorSimulator): return True - if isinstance(backend, AerSimulator) and "aer_simulator_statevector" in backend.name(): - return True + if backend_interface_version <= 1: + if isinstance(backend, AerSimulator) and "aer_simulator_statevector" in backend.name(): + return True + else: + if isinstance(backend, AerSimulator) and "aer_simulator_statevector" in backend.name: + return True if backend is None: return False backend_interface_version = _get_backend_interface_version(backend) diff --git a/releasenotes/notes/fix_backend_name-e84661707058b529.yaml b/releasenotes/notes/fix_backend_name-e84661707058b529.yaml new file mode 100644 index 000000000000..a3c33845de64 --- /dev/null +++ b/releasenotes/notes/fix_backend_name-e84661707058b529.yaml @@ -0,0 +1,6 @@ +--- +fixes: + - | + In utils/backend_utils.py there is name() function call without checking + backend version. This fix adds check of backend version and get property + name for V2 From 810d2ef9ab462e018b248c081d64c5d2ae6b84a4 Mon Sep 17 00:00:00 2001 From: Jun Doi Date: Fri, 20 Oct 2023 19:08:57 +0900 Subject: [PATCH 2/5] move backend_interface_version --- qiskit/utils/backend_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit/utils/backend_utils.py b/qiskit/utils/backend_utils.py index a7952a6a1b5b..f922091eafaf 100644 --- a/qiskit/utils/backend_utils.py +++ b/qiskit/utils/backend_utils.py @@ -181,6 +181,7 @@ def is_statevector_backend(backend): Returns: bool: True is statevector """ + backend_interface_version = _get_backend_interface_version(backend) if has_aer(): from qiskit.providers.aer.backends import AerSimulator, StatevectorSimulator @@ -194,7 +195,6 @@ def is_statevector_backend(backend): return True if backend is None: return False - backend_interface_version = _get_backend_interface_version(backend) if backend_interface_version <= 1: return backend.name().startswith("statevector") else: From 54391f19b3796847ad8e4c9e3941230f3be283b2 Mon Sep 17 00:00:00 2001 From: Jun Doi Date: Fri, 20 Oct 2023 19:10:32 +0900 Subject: [PATCH 3/5] check backend is None before get version --- qiskit/utils/backend_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qiskit/utils/backend_utils.py b/qiskit/utils/backend_utils.py index f922091eafaf..a05626095f45 100644 --- a/qiskit/utils/backend_utils.py +++ b/qiskit/utils/backend_utils.py @@ -181,6 +181,8 @@ def is_statevector_backend(backend): Returns: bool: True is statevector """ + if backend is None: + return False backend_interface_version = _get_backend_interface_version(backend) if has_aer(): from qiskit.providers.aer.backends import AerSimulator, StatevectorSimulator @@ -193,8 +195,6 @@ def is_statevector_backend(backend): else: if isinstance(backend, AerSimulator) and "aer_simulator_statevector" in backend.name: return True - if backend is None: - return False if backend_interface_version <= 1: return backend.name().startswith("statevector") else: From 42805394b704e57c2ee2a7ff7114558bfa308193 Mon Sep 17 00:00:00 2001 From: Jun Doi Date: Sat, 21 Oct 2023 09:58:53 +0900 Subject: [PATCH 4/5] Update qiskit/utils/backend_utils.py Co-authored-by: Matthew Treinish --- qiskit/utils/backend_utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/qiskit/utils/backend_utils.py b/qiskit/utils/backend_utils.py index a05626095f45..df89d7f194da 100644 --- a/qiskit/utils/backend_utils.py +++ b/qiskit/utils/backend_utils.py @@ -189,11 +189,12 @@ def is_statevector_backend(backend): if isinstance(backend, StatevectorSimulator): return True - if backend_interface_version <= 1: - if isinstance(backend, AerSimulator) and "aer_simulator_statevector" in backend.name(): - return True - else: - if isinstance(backend, AerSimulator) and "aer_simulator_statevector" in backend.name: + if isinstance(backend, AerSimulator): + if backend_interface_version <= 1: + name = backend.name() + else: + name = backend.name + if "aer_simulator_statevector" in name: return True if backend_interface_version <= 1: return backend.name().startswith("statevector") From 435eab443cb4752b50157e012c5227ccd86626e7 Mon Sep 17 00:00:00 2001 From: Jun Doi Date: Sat, 21 Oct 2023 09:59:05 +0900 Subject: [PATCH 5/5] Update releasenotes/notes/fix_backend_name-e84661707058b529.yaml Co-authored-by: Matthew Treinish --- releasenotes/notes/fix_backend_name-e84661707058b529.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/releasenotes/notes/fix_backend_name-e84661707058b529.yaml b/releasenotes/notes/fix_backend_name-e84661707058b529.yaml index a3c33845de64..ed0cbe9a2658 100644 --- a/releasenotes/notes/fix_backend_name-e84661707058b529.yaml +++ b/releasenotes/notes/fix_backend_name-e84661707058b529.yaml @@ -1,6 +1,7 @@ --- fixes: - | - In utils/backend_utils.py there is name() function call without checking - backend version. This fix adds check of backend version and get property - name for V2 + Fixed an issue in the :class:`.QuantumInstance` class where it was assuming + all ``AerSimulator`` backends were always :class:`.BackendV1`. This would cause + combatibility issues with the 0.13.0 release of ``qiskit-aer`` which is starting to + use :class:`.BackendV2` for `AerSimulator`` backends.