Source code for qlauncher.routines.qiskit.backends.aer_backend
1"""qiskit_aer implementation of QiskitBackend"""
2from typing import Literal
3
4from qiskit.providers import BackendV1, BackendV2
5from qiskit.primitives import BackendSamplerV2, BackendEstimatorV2
6from qiskit_ibm_runtime import Options
7from qiskit_aer import AerSimulator
8from qiskit_aer.noise import NoiseModel
9
10from qlauncher.routines.qiskit.backends.qiskit_backend import QiskitBackend
11
12
[docs]
13class AerBackend(QiskitBackend):
14 """
15 QiskitBackend utilizing the qiskit_aer library. Runs local simulations only, utilizing CUDA capable gpus if available.
16 """
17
18 def __init__(
19 self,
20 name: Literal['local_simulator', 'backendv1v2'],
21 options: Options | None = None,
22 backendv1v2: BackendV1 | BackendV2 | None = None,
23 auto_transpile_level: Literal[0, 1, 2, 3] | None = None,
24 simulation_method: str = 'automatic',
25 simulation_device: Literal['CPU', 'GPU'] = 'CPU',
26 ) -> None:
27 self.method = simulation_method
28 self.device = simulation_device
29 super().__init__(name, options, backendv1v2, auto_transpile_level)
30
31 def _set_primitives_on_backend_name(self):
32 if self.name == 'local_simulator':
33 self.simulator = AerSimulator(method=self.method, device=self.device)
34 elif self.name == 'backendv1v2':
35 if self.backendv1v2 is None:
36 raise AttributeError(
37 'Please indicate a backend when in backendv1v2 mode.')
38 noise_model = NoiseModel.from_backend(self.backendv1v2)
39 self.simulator = AerSimulator(method=self.method, device=self.device, noise_model=noise_model)
40 else:
41 raise ValueError(
42 f"Unsupported mode for this backend:'{self.name}'. Please use one of the following: ['local_simulator', 'backendv1v2']")
43
44 self.sampler = BackendSamplerV2(backend=self.simulator)
45 self.estimator = BackendEstimatorV2(backend=self.simulator)
46
47 self._configure_auto_behavior()
48
[docs]
49 def set_options(self, **fields):
50 """Set additional options for the instance AerSimulator"""
51 self.simulator.set_options(**fields)