From 0fc19fd1852648f76cd95be77d46a844883d2d54 Mon Sep 17 00:00:00 2001 From: Hitomi Takahashi Date: Thu, 1 Jun 2023 03:14:42 +0900 Subject: [PATCH] Set the number of qubits with the coupling map (#1825) * Set n_qubits from coupling map * Add a test and release notes * Fix lint --------- Co-authored-by: Hiroshi Horii --- qiskit_aer/backends/aer_simulator.py | 4 ++++ .../fix-number-qubits-a417ca6afa64264f.yaml | 7 +++++++ .../backends/aer_simulator/test_options.py | 20 +++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 releasenotes/notes/fix-number-qubits-a417ca6afa64264f.yaml diff --git a/qiskit_aer/backends/aer_simulator.py b/qiskit_aer/backends/aer_simulator.py index db601d654..6a427bb1e 100644 --- a/qiskit_aer/backends/aer_simulator.py +++ b/qiskit_aer/backends/aer_simulator.py @@ -940,5 +940,9 @@ class AerSimulator(AerBackend): # Clear options to default description = None n_qubits = None + + if self._configuration.coupling_map: + n_qubits = max(list(map(max, self._configuration.coupling_map))) + 1 + self._set_configuration_option("description", description) self._set_configuration_option("n_qubits", n_qubits) diff --git a/releasenotes/notes/fix-number-qubits-a417ca6afa64264f.yaml b/releasenotes/notes/fix-number-qubits-a417ca6afa64264f.yaml new file mode 100644 index 000000000..760a5b788 --- /dev/null +++ b/releasenotes/notes/fix-number-qubits-a417ca6afa64264f.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Fix an issue even if the number of qubits is set by a coupling map + or device's configuration, when the simulation method is configured, + the number of qubits is overwritten in accordance with the method. + Fixed `#1769 `__ \ No newline at end of file diff --git a/test/terra/backends/aer_simulator/test_options.py b/test/terra/backends/aer_simulator/test_options.py index e82c00e2d..a991ccb3b 100644 --- a/test/terra/backends/aer_simulator/test_options.py +++ b/test/terra/backends/aer_simulator/test_options.py @@ -19,6 +19,9 @@ from qiskit_aer.noise import NoiseModel from test.terra.backends.simulator_test_case import SimulatorTestCase, supported_methods from qiskit.quantum_info.random import random_unitary from qiskit.quantum_info import state_fidelity +from qiskit.providers.fake_provider import FakeMontreal + +from qiskit_aer import AerSimulator @ddt @@ -282,3 +285,20 @@ class TestOptions(SimulatorTestCase): "Required memory: {}".format(2 ** (n - 20) * 16) in result.results[0].status ) self.assertTrue("max memory: {}".format(max_memory_mb) in result.results[0].status) + + @data( + "automatic", + "stabilizer", + "statevector", + "density_matrix", + "matrix_product_state", + "extended_stabilizer", + "unitary", + "superop", + ) + def test_num_qubits(self, method): + """Test number of qubits is correctly checked""" + + num_qubits = FakeMontreal().configuration().num_qubits + backend = AerSimulator.from_backend(FakeMontreal(), method=method) + self.assertGreaterEqual(backend.configuration().num_qubits, num_qubits)