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 <hhorii@users.noreply.github.com>
This commit is contained in:
Hitomi Takahashi 2023-06-01 03:14:42 +09:00 committed by GitHub
parent 3954278265
commit 0fc19fd185
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 0 deletions

View File

@ -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)

View File

@ -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 <https://github.com/Qiskit/qiskit-aer/issues/1769>`__

View File

@ -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)